Swift 101 - Classes, Variáveis, Propriedades e Métodos

Como prometido, aqui está minha primeira parte sobre aprender a programar na nova linguagem Swift!

Definindo Classes no Swift

O código a seguir mostra um exemplo de uma definição de classe Swift:

Para declarar uma classe no Swift, você usa a palavra-chave class seguida pelo nome da classe. Se tiver uma superclasse, você adiciona dois pontos e o nome da superclasse. O início e o final da aula são indicados pelas chaves de abertura e fechamento.

No Swift, as classes são definidas em um único arquivo de código-fonte .swift em comparação com o Objective-C, em que as classes são definidas em dois arquivos separados, um arquivo de cabeçalho (.h) e um arquivo de implementação (.m).

Declarando Variáveis

O código a seguir mostra um exemplo de uma declaração de variável:

Você começa uma declaração de variável com a palavra-chave var seguida pelo nome da variável. Em seguida, você adiciona dois pontos, seguidos pelo tipo de variável. Depois, você pode atribuir um valor à variável usando o operador de atribuição (=).

No Swift, se você atribuir um valor inicial a uma variável, não será necessário especificar o tipo de variável, conforme mostrado no código a seguir:

Você pode fazer isso porque o Swift tem algo chamado inferência de tipos, onde ele pode descobrir, ou inferir o tipo da variável com base no valor atribuído a ela.

Em Objective-C, você pode declarar variáveis ​​de instância no nível da classe e variáveis ​​locais nos métodos. No Swift, não há variáveis ​​de nível de classe - apenas variáveis ​​locais que você declara dentro dos métodos. No entanto, você pode declarar propriedades no nível de classe (consulte a seção Declaring Properties abaixo).

O fim do asterisco

Em Objective-C, você usa um asterisco para indicar que uma variável contém um ponteiro para um objeto. No Swift, uma constante ou variável pode conter um ponteiro para um endereço na memória (embora não seja um ponteiro direto), mas você nunca precisará usar um asterisco neste contexto.

Declarando Propriedades Simples

O código a seguir mostra um exemplo de declaração de propriedade:

Como você pode ver, é muito semelhante a declarar uma variável, exceto que você declara uma propriedade no nível da classe, e não dentro de um método.

Como nas variáveis, se você atribuir um valor inicial a uma propriedade, não precisará especificar o tipo da propriedade. Você também pode inicializar propriedades de dentro dos métodos do inicializador (veja a seção abaixo sobre Inicializadores para detalhes). O código a seguir mostra um exemplo de declaração de uma propriedade sem especificar um tipo:

Em Objective-C, as propriedades geralmente tinham variáveis ​​de instância de apoio nas quais o valor real da propriedade era armazenado. O Swift simplifica as propriedades unificando os conceitos de propriedades e variáveis ​​de instância. As propriedades não possuem mais uma variável de instância de apoio. Tudo sobre uma propriedade é declarado em um único local.

No Swift, você não precisa usar a palavra-chave self para se referir a uma propriedade, a menos que o método no qual você está escrevendo código tenha um parâmetro com o mesmo nome da propriedade.

Declarando Propriedades Computadas

O Swift também calculou propriedades que associaram os métodos get e set, conforme mostrado no código a seguir:

Neste exemplo, a classe Thermometer tem uma propriedade temperatureFahrenheit simples e uma propriedade temperateCelsius calculada .

Observe que os métodos get e set da classe Thermometer não fazem referência a uma variável de instância, porque não existe uma variável de instância no Swift!

Nesse caso, o método get recupera o valor da propriedade temperatureFahrenheit, converte-o em Celsius e retorna o valor. O método set usa o valor passado para ele, converte-o para Fahrenheit e, em seguida, armazena o resultado na propriedade temperatureFahrenheit .

O valor passado ao método set da propriedade é armazenado em um parâmetro chamado implicitamente chamado newValue . Se você quiser usar um nome de parâmetro diferente, poderá especificar o nome entre parênteses após o conjunto, conforme mostrado no código a seguir:

Especificar um nome de parâmetro pode tornar seu código mais fácil de entender. Neste exemplo, definir o nome do parâmetro como celsiusValue torna mais claro que o método set está convertendo o valor de Celsius para Fahrenheit.

Declarando métodos

O código a seguir contém um exemplo de uma declaração do método Swift:

Assim como no Objective-C, no Swift, você declara um método de instância entre as chaves de abertura e fechamento da classe à qual ele pertence.

Para declarar um método, você primeiro especifica a palavra-chave func, seguida pelo nome do método. Se o método tiver parâmetros, você os inclui entre parênteses. Para cada parâmetro, você especifica o nome do parâmetro seguido por dois pontos, seguido por seu tipo. Se o método tiver um valor de retorno, você adicionará um sinal de hífen e maior que ( -> ) seguido pelo tipo do valor de retorno.

O código a seguir contém um exemplo de um método que não aceita parâmetros e não retorna nada:

Como você pode ver, parênteses são necessários após o nome do método, mesmo se não houver parâmetros. Um método que não retorna nada não precisa do indicador do valor de retorno ( -> ) após os parênteses.

Métodos de Inicialização

O código a seguir contém um exemplo de um método inicializador usado para inicializar uma classe.

Os métodos Initializer são sempre denominados init e, ao contrário do Objective-C, nunca retornam um valor. No exemplo acima, o método init aceita um parâmetro currentTemperature no qual você pode passar a temperatura inicial. Este valor é então armazenado na propriedade temperatureFahrenheit .

Você pode criar vários métodos de iniciador, conforme mostrado no exemplo de código a seguir:

Neste exemplo, os dois métodos são denominados init, portanto, para tornar os nomes exclusivos, um nome externo é atribuído aos parâmetros - fromFahrenheit e fromCelsius . Isso faz com que os nomes dos métodos completos sejam init (fromFahrenheit :) e init (fromCelsius :) respectivamente.

Vale a pena notar que no Swift, os métodos init não são herdados. De uma perspectiva prática, isso significa que você não deve colocar nenhum código em um método init que você queira poder sobrescrever em uma subclasse. Se você tiver código que deseja executar durante a fase de inicialização de uma classe e desejar substituir esse código em uma subclasse, crie um método separado, coloque o código de inicialização nesse método e, em seguida, chame esse método a partir do init .

Criando uma instância de uma classe

Aqui está um exemplo de como criar uma instância de uma classe:

Como você pode ver, para criar uma instância de uma classe, você declara uma variável para manter uma referência à classe, digite um sinal de igual (o operador de atribuição) e, em seguida, o nome da classe seguido por parênteses.

Conclusão

Estes são alguns dos princípios básicos que você precisa saber para começar a usar a programação Swift. Nas próximas postagens eu vou mergulhar mais fundo na linguagem para ajudá-lo a se tornar proficiente com a nova sintaxe e estrutura do Swift.