Artigos anteriores
Série objective-c 1 - Primeira aplicação via console texto
Série objective-c 2 - Primeira aplicação compilada via X-Code
Série objective c 3 - Exercícios de fixação
Série objective c 4 - Orientação a objetos
Obrigado pelos feedbacks e vários e-mails que tenho recebido, sempre que precisarem podem entrar em contato.
No último artigo nós vimos os primeiros passos em orientação a objetos e escrevemos o primeiro programa, hoje irei fazer uma revisão rápida sobre a estrutura lógica de um programa em objective-c, é importante que leiam o artigo Série objective-c 4 - Orientação a objetos para terem um melhor aproveitamento deste artigo.
Hoje iremos ver mais detalhes da estrutura lógica de um programa objective-c.
Existem 3 seções fundamentais em um programa:
1. @interface section
2. @implementation section
3. program section
A @interface section é onde você descreve a classe, uma espécie de contrato, onde você define o que será implementado na sua classe, informa o nome da classe, seus atributos, métodos.
A @implementation section é onde codificamos os métodos que foram definidos na interface.
3. programa section é o inicio do programa em si, onde definimos a função main e o que ela vai executar.
Cada seção tem suas tarefas bem definidas em objective-c, inclusive é recomendavel que elas sejam divididas em arquivos diferentes ou seja um arquivo para @interface section, outro para @implementation e mais um para o programa principal. No nosso exemplo inicial usamos apenas um, mas no decorrer deste curso iremos aprender a usa-los separados.
1. @interface section
Quando você deseja criar uma classe, primeiro você define a sua interface, o nome da classe, de qual classe ela vai herdar funcionalidades ( não obrigatório ), quais os atributos e métodos que esta classe irá ter, esta é a parte de interface que devemos escrever em um programa objective-c.
@interface ClassName: ParentClassName
{
atributos;
}
métodos;
@end
// Exemplo prático
@interface Funcionario: Object
{
int cpf
int anoNascimento;
}
-(void) setCpf: (int) nCpf;
-(void) setAnoNascimento: (int) nAno;
-(void) printFicha;
@end
Definimos uma classe chamada Funcionario que vai herdar caracteristicas de uma super classe chamada Object, esta classe vai ter os atributos cpf e anoNascimento e 3 métodos de instância setCpf, setAnoNascimento e printFicha.
Esta é a seção interface de um programa objective-c, leia este artigo e estude o exemplo do artigo anterior.
2. @implementation section
A seção de implementação é onde você vai escrever o código dos métodos que foram definidos na interface, caso você defina um método na interface, mas não escreva sua implementação na hora da compilação, será dado um aviso que o método definido na interface não foi implementado, mas o programa vai ser compilado, caso por algum razão da vida, queira definir um método e não implementa-lo totalmente, você pode definir a assinatura do método e a parte da codificação entre {} deixar em branco.
@implementation ClassName;
métodos;
@end
Exemplo prático
@implementation Funcionario;
-(void) setCpf: (int) nCpf
{
cpf = nCpf;
}
-(void) setAnoNascimento: (int) nAno
{
ano=nAno;
}
-(void) printFicha
{
printf("Ficha do funcionario\n");
printf("CPF: %i",cpf);
printf("Ano Nascimento:%i",ano);
}
@end
@implementation Funcionario;
Iniciamos a implementação dos métodos definidos na classe Funcionário.
-(void) setCpf: (int) nCpf
Esta é a assinatura do método setCpf definido na interface funcionário.
- O sinal de - indica que é um método de instância, caso fosse estático seria +
(void) se refere ao retorno do método, neste caso void indica que ele nao retorna nada
setCpf: Nome do método
(int) nCpf informa que na hora da chamada, este método recebe um parametro inteiro
{} O código para implementação do método deve estar entre chaves
// A implementação dos outros métodos...
@end Finaliza o bloco de implementação.
3. Program Section
Esta é a parte onde se inicia o seu programa a partir da função main.
int main (argc,char argv[])
{
Funcionario *pierre;
pierre=[Funcionario alloc];
pierre=[pierre init];
[pierre setCpf 12345674831];
[pierre setAnoNascimento 1969];
[pierre printFicha];
[pierre free];
return 0;
}
Este linha indica que pierre é um objeto do tipo funcionário, ele é usado para guardar valores da classe Funcionário, o * indica que ele é um ponteiro, iremos ver sobre ponteiros mais adiante.
Funcionario *pierre;
Nesta linha nós estamos allocando um espaço da memória para o objeto pierre, ou seja foi disponibilizada uma área da memória para este objeto, não podemos ainda acessar seus atributos e métodos porque eles ainda não foram inicializados.
pierre=[Funcionario alloc];
Depois de alocar espaço na memória, inicializamos o objeto ou seja tornamos acessiveis as suas propriedades e métodos.
pierre=[pierre init]
Agora com o objeto instanciado, estamos usando os métodos que implementamos, o método setCpf e passando o parametro 12345674831.
[pierre setCpf 12345674831]
Usando método setAnoNascimento e passando o parametro 1969. Em Java poderia ser algo do tipo pierre.setAnoNascimento(1969)
[pierre setAnoNascimento 1969]
Abaixo usamos o método printFicha como podem ver ele não requer parametros.
[pierre printFicha]
Abaixo usamos o método free, este método a exemplo do alloc e do init, não foi implementado por nós, mas sim herdado da classe Object, analisem a parte de interface, para comprovarem este fato, já deu para perceber como a herança é um conceito importante em OOP. Este método libera a memória usada pelo objeto, geralmente usamos quando não precisamos mais do objeto no nosso programa.
[pierre free]
É o retorno da função main.
return 0;
Chegamos ao fim de mais um artigo da série objective-c, espero que tenha ficado claro estes conceitos iniciais da estrutura lógica de um programa em objective-c. Agora é continuar os estudos e praticando sempre.
Abraços,
Pierre


























