Swift a nova linguagem da Apple

Swift a nova linguagem da Apple
fabio.pimentel
fabio.pimentel

Compartilhe

Se você é desenvolvedor Apple já deve saber que uma nova linguagem de programação foi lançada no último WWDC 14, Swift é nome dela.

Até a versão do iOS 7 a linguagem utilizada oficialmente era o Objective-C que sempre foi um degrau mais alto na escalada pela proficiência, tanto para o desenvolvedor que vinha de outras linguagens quanto para os iniciantes no mundo de programação. A partir do iOS 8 as aplicações poderão ser desenvolvidas com Objective-C e Swift, inclusive com as duas no mesmo projeto.

A tendência é que o Swift atraia mais desenvolvedores por sua facilidade e semelhança com outras linguagens. Nesse artigo vamos focar nos conceitos iniciais dessa nova linguagem.

Definição de variáveis e constantes

Quando se aprende uma nova linguagem o primeiro passo normalmente a ser dado é a definição de uma variável. No Swift não será diferente, observe o exemplo:


 var nome = "Fábio"

O primeiro detalhe de certa forma comum nas linguagens mais recentes é a ausência do ponto e vírgula, ele é opcional para a linguagem.

Perceba que não foi necessário a declaração do tipo String, isso porque o compilador infere o tipo após a atribuição. A declaração acima tem os mesmos efeitos práticos da seguinte:


var nome: String = "Fábio"

Dessa maneira o código abaixo nem compila, pois a linguagem possui uma tipagem estática.


var nome = "Fábio"
nome = 10 // Não compila pois nome é String, já que esse tipo foi inferido da linha anterior

A palavra var antes do nome indica que podemos mudar o nome para outra String, ou seja é uma variável e o código a seguir é válido:


var nome = "Fábio"
nome = "Zico"

Caso uma alteração não fosse permitida, deveríamos declarar uma constante usando let.


let nome = "Fábio"
nome = "Zico" // Não compila pois nome é constante
Banner promocional da Alura, com chamada para um evento ao vivo no dia 12 de fevereiro às 18h30, com os dizeres

Trabalhando com classes

Por ser uma linguagem que segue o paradigma da Orientação de Objetos, saber a definir uma classe é imprescindível.

No Swift, diferentemente do Objective-C que usa um arquivo de definições(.h) e outro de implementações(.m), usa-se um único arquivo(.swift) para a definição de uma classe. Veja abaixo o exemplo: Veiculo.swift


class Veiculo{
   var ano: Int 

}

Com o código anterior, definimos um Veiculo que possui um atributo ano.

Mas da maneira como declaramos algumas informações ainda são necessárias para a classe compilar:

1)Declaração de construtor; 2)Inicialização de atributos;

Veiculo.swift


class Veiculo{
   var ano: Int
   var valor: Double = 20_000.0

   //construtor
   init(){
      self.ano = 2014
   }
}

Perceba que o atributo ano foi inciado no construtor e o atributor valor, novo atributo, foi inicializado fora. Sem problemas, podemos iniciar das duas formas. Essa exigência de iniciar o valor acontece pois não existe um valor default para os tipos. Outro ponto a ser notado é na declaração do valor que foi usado underscore para uma melhor legibilidade. Nada impede também de usar o literal como de costume: 20000.0;

Modificadores de acesso

Talvez você tenha percebido que estamos acessando direto o atributo, e essa falta de encapsulamento não é mais necessária com a chegada dos modificadores de acesso a partir do Xcode 6 beta 4.

Existem 3 modificadores por ordem de menos restritivo ao mais restritivo: public, internal e private. Sendo que o default é ser internal ao módulo/framework ou app/projeto.


class Veiculo{
    private var ano: Int
    private var valor: Double = 20_000.0

    //construtor
    init(){
        self.ano = 2014
    }
}

Instanciando Objetos

Definido os princípios básicos do use de classe no Swift, vemos a necessidade de instanciação dos objetos.


var fusca = Veiculo()  //ou var fusca: Veiculo = Veiculo()

Ao contrário do que era feito no Objective-c, com duas chamadas de método(alloc e init), aqui usa-se apenas o nome do tipo e parênteses.

Definindo comportamentos

Uma classe também possui comportamentos e damos essas características através dos métodos que no Swift são declarados como funções(é possível ter funções sem uso de classes).


class Veiculo{
   private var ano: Int
   private var valor: Double = 20_000.0

   //… construtor omitido

   func calculaIPVA() -> Double{
      return self.valor * 0.05 
   }
}

No exemplo anterior, foi definido um método cujo nome é calculaIPVA e retorna um Double além de não receber nenhum parâmetro. O seu uso se daria da seguinte forma:


 var fusca = Veiculo()
 var valorDoIpva = fusca.calculaIPVA()

Em métodos que possuem parâmetros teremos a sintaxe a seguir:


class Veiculo{
   private var ano: Int
   private var valor: Double = 20_000.0
   //… construtor omitido
   func calculaIPVA() -> Double{
      return self.valor * 0.05
   }
   func calculaDepreciacaoParaAno(ano: Int, comTaxa taxaDeDepreciacao: Double)->                                                       Double{ 
   //lógica omitida   
  } 
}

Perceba que no método calculaDepreciacaoParaAno temos dois parâmetros e no que se refere a taxa foi usado o conceito de External Parameter Name, para que fique mais descritivo. Não é obrigatório nomear o parâmetro como fizemos ao declarar o comTaxa, mas é um recomendação para uma melhoria da legibilidade, principalmente com métodos que recebem vários parâmetros. O uso desse método ficaria como a seguir:


var fusca = Veiculo()
var valorDoIpva = fusca.calculaIPVA()
fusca.calculaDepreciacaoParaAno(2020, comTaxa: 0.12)

Explorando o Swift

Para os testes anteriores é necessário ter o Xcode 6.

Utilize um projeto Playground, que como o próprio nome diz é o seu ambiente de diversão/exploração da linguagem e permite uma interatividade com aparência de linguagem de script, embora Swift seja compilado.

Swift e Objective-C

É importante saber que a comunicação entre Swift e Objective-C é bem transparente e de certa forma até intuitiva. De forma que pode-se usar uma aplicação com as duas linguagens nessa fase transitória. A comunicação não é o foco desse artigo, mas se ficou curioso sugiro que acesse essa documentação : Swift and Objective-C in the Same Project

Conclusão

Uma nova porta está aberta aos desenvolvedores que ainda não entraram no mundo iOS. Swift tem tudo para se tornar em um futuro próximo a linguagem dominante no mercado Apple. Para um aprofundamento nos estudos acesse a documentação oficial da linguagem: Swift Programming Language.

Veja outros artigos sobre Mobile