Neste quarto artigo da série iremos ver os conceitos iniciais sobre orientação a objetos com objective-c, iremos utilizar um exemplo bem simples para ilustrar conceitos iniciais, aguardo os comentários. Leia o restante do artigo.
O código completo eu coloquei nos comentários ou seja o que deve ser digitado, por problemas no Blogger ele ignora alguns caracteres como ">", nos comentários tem mais explicações.
Estou de volta ao blog e hoje iremos falar sobre orientação a objetos no objective-c. Iremos trabalhar com um exemplo simples e ilustrar os conceitos de classe, objetos métodos e atributos.
Aos que não tem familiaridade com este paradigma de programação, recomendo ler materiais sobre o assunto, pois o domínio da programação orientada a objetos é vital no desenvolvimento de aplicações em objective-c.
Até agora vimos exemplos extremamente simples e usando apenas a função main, nada diferente dos programas feitos em C ansi.
Vamos estudar alguns aspectos mais específicos do objective-c, em especial a orientação a objetos. Vamos escrever um pequeno programa que armazena e exibe o saldo de uma conta corrente. Como se trata de um exemplo, nesta versão, não iremos contemplar, saques, depósitos, apenas o número da conta e saldo.
Abaixo temos um diagrama de classe bem simples, do que iremos implementar, recomendo darem uma olhada em UML em especial diagrama de classes para quem tiver dúvidas.
São definidos 2 atributos, saldo e conta, private indica que eles serão acessiveis apenas dentro da classe, isto mostra um exemplo de um dos conceitos de OOP o encapsulamento, logo a seguir definimos os tipos destes atributos int e float.
setConta, setSaldo e printSaldo. Eles tem escopo público(public), diferente dos nossos atributos, eles podem ser acessados de fora da nossa classe, o parametro void indica que eles não terão retorno algum. Os métodos setConta e setSaldo serão chamados mas terão um parametro obrigatório na hora da chamada respectivamente int e float.
Agora que entendemos o nosso diagrama de classe, temos os atributos e os métodos definidos vamos escrever o nosso primeiro programa em objective-c com programação orientada a objetos.
A definição da interface da classe é uma espécie de contrato, onde você define o nome da sua classe, se ela herda característica de outra classe os atributos que a compoem e os métodos que ela irá ter. Ou seja definimos apenas a estrutura da classe.
Definimos a interface, o nome da classe será Conta e ela é subclasse de Object ou seja ele herda todos os métodos e atributos desta classe. Definimos os atributos conta e saldo sendo tipo int ( inteiro) e float respectivamente.
Definimos os 3 métodos da classe o sinal de - indica que será um método de instância ou seja ele só pode ser acessado depois de instanciada o objeto da classe, mas adiante veremos mais detalhes sobre isto. setConta e setSaldo necessitam de um parametro do tipo int e a variavel usada para este parametro é definida logo adiante numberConta e valorOperação respectivamente. O @end fecha o bloco.
Implementação do método setConta, o método não retorna nada (void) na sua chamada ele recebe um inteiro(int) que será armazenado na variavel numberConta no corpo do método definido pelos "{}" ele armazena no atributo conta o número passado por parâmetro.
Implementação do método setSaldo, o método não retorna nada (void) na sua chamada ele recebe um float(float) que será armazenado na variavel valorOperacao no corpo do método definido pelos "{}" ele armazena no atributo saldo o número passado por parâmetro.
Este método nada retorna (void) não recebe parametros e simplesmente imprime as informações armazenadas por setConta e setSaldo.
Nesta parte do código é de fato onde se inicia a execução do nosso programa, vamos ver passo a passo o que acontece.
Função main, é o inicio do programa, ela retorna um inteiro ao seu final e alguns parametros podem ser passados via linha de comando, mais adiante veremos como isto funciona.
Nesta linha criamos uma variavel chamada itau, que guardará valores da classe Conta, ou seja poderemos acessar os métodos e atributos desta classe atraves deste objeto, o * informa que itau é também um ponteiro.
Após alocar espaço inicializamos as variaveis que fazem parte do objeto, no nosso exemplo os atributos conta e saldo.
Tudo pronto, começamos a usar o nosso objeto, acessamos o método setConta definido na classe e passamos o parâmetro 12 para ele. Algumas linguagens se usam o ponto, por exemplo em Java esta chamada poderia ser itau.setconta(12), abaixo a chamada deste método em objective-c.
Aqui estamos executando o método setSaldo e passando o valor 200.00, como ele aceita um float podemos passar a parte decimal.
Já usamos o objeto para atribuir os valores e imprimir, agora usamos o método free para liberar a memória, este método não foi criado por você, como a nossa classe Conta herda Object ela pode usar este método que pertence a Object, este é o conceito de herança, não tivemos o trabalho de implementar este método, simplesmente herdamos ele de outra classe.
Estamos finalizando a função main e na declaração dela ela exige que se retorne um inteiro, estamos retornando o valor zero, que na verdade é um código para informar ao Sistema operacional que o programa terminou com sucesso.
Bem, ficamos por aqui, estude o exemplo, crie um programa qualquer parecido e poste suas dúvidas nos comentários ou me mande um e-mail.
Na próxima aula iremos fazer alguns exercícios e incrementaremos o nosso programa de conta, adicionando novos métodos. E estude orientação a objetos.
Gostaria de pedir neste artigo que as telas mostrando como ficou. Logo depois da execução dos códigos. Obrigado.
Estou acompanhando o obj-c e estou gostando está mto divertido! e interessante! já pensou em fazer alguma apostila em pdf e por no apostilando.com?
Também estou acompanhando essa série e parabenizo o autor pela grande iniciativa e a ótima didática. Infelismente estou tendo dificuldades em fazer o programa funcionar... no item Listagem do programa em azul: você começa com os comentários e parte para a definição de interface... Quando vai explicar o código surge um item anterior a esses: Definindo as diretrizes, que pelo qu entendi tem duas linhas, certo? No meu compilador dá erro: object.h: No such file or directory... No final do código aparece o seguinte erro: Warning 'Conta' may not respond to'-free'... Se removo as duas primeiras linhas e substituo Object pelo NSObject sugerido pelo Fábio o programa executa mais cheio de erros junto com as respostas.
Este exemplo tem um problema devido ao Blogger plataforma do Google ignorar alguns caracteres especiais.
Na verdade o NSObject é quando você esta usando as classes da Foundation. Como estamos apenas com objective-c a classe herda de Object mesmo.
Tudo bem contigo? Realmente os tutoriais são antigos sim e de lá para cá muita coisa mudou. Inclusive para compilar no Snow Leopard alguns erros existem, pela mudanças do compilador.