SlideShare uma empresa Scribd logo
1 de 33
Baixar para ler offline
Objective-C
Linguagem Nativa para Desenvolvimento iOS
Importação de Bibliotecas
Os arquivos de biblioteca possuem extensão ".
h":
#import <Foundation/Foundation.h>
Main
No Objective-C, a declaração da função main,
ou função principal é feita da seguinte forma:
int main(int argc, const char * argv[])
{
return 0;
}
Alocação de memória
Existem duas formas para se alocar memória:
1) Automático, sem necessidade de declarar o
fim da utilização:
@autoreleasepool {}
2) Declaração manual:
NSAutoreleasePool * pool =[[NSAutoreleasePoll
alloc] init];
E ao fim:
[pool drain];
"Print"
Para escrever algo na tela, utiliza-se o
seguinte comando:
NSLog(@"TEXTO");
"Hello, World!"
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{@autoreleasepool {
//insert codes here
NSLog(@"Hello, World!");}
return 0;
}
Declaração de Variáveis
Assim como no C, C++ e Java, a declaração
das variáveis no Objective-c inicia-se pelo tipo
dela, como: bool, int, double, float, string,
etc.
Exemplo:
int idade = 5;
float altura = 1.8;
Imprimindo Variáveis
Para imprimir variáveis, funciona da mesma
forma que no C e no C++, mudando apenas
algumas variáveis de impressões:
NSLog(@"Você tem %i anos e %f metros",
idade, altura);
Criando Classes
No Objective-C, utiliza-se a o início
@interface para declarar uma Classe.
Segue exemplo:
@interface NOME_DA_CLASSE: NSObject{
//declarando variáveis
int idade;
int peso;
}
Criando métodos
//Um método normal, apenas de execução
-(void) imprimir;
//Métodos que irão alterar alguma variável
deve declarar uma nova antes, como no
exemplo
-(void) setIdade: (int) i;
-(void) setPeso: (int) p;
Finalizar Classe
Para dizer ao programa que já terminamos a
declaração da Classe utilizamos o seguinte:
@end
Implementação dos Metodos da Classe
@implementation Pessoas
-(void) imprimir{
NSLog(@"Meu nome é Alamo e eu tenho %i anos e peso %i
kilos", idade, peso);}
-(void) setIdade:(int) i{
idade = i;}
-(void) setPeso:(int) p{
peso = p;}
@end
Explicando Implementação
Anteriormente existiu apenas a declaração,
naquela etapa dizemos ao programa quais
funções farão parte da classe declarada.
Agora, programamos toda a execução da
classe. Declarando toda as 3 funções ditas de
que iriam existir.
Variáveis auxiliares
Note que novamente declaramos as variáveis i
e p para as funções setIdade e setPeso,
respectivamente.
Estas variáveis auxiliares serão usadas todas as
vezes que chamadas estas funções para
realmente auxiliar na execução da função e
atribuição de um novo valor.
Finalizando Implementação
Assim como na Classe, para finalizar
declaramos:
@end
Brincando com Objetos
Pessoas * alamo = [[Pessoas alloc] init];
alamo = [Pessoas alloc];
alamo = [alamo init];
[alamo setNome:@"Alamo"];
[alamo setIdade:20];
[alamo setPeso:110];
[alamo setAltura:1.84];
[alamo imprimir];
String
NSString* nome = @"Alamo";
Pegando dados de Objeto
int alamoPeso = [alamo getPeso];
int alamoIdade = [alamo getIdade];
float alamoAltura = [alamo getAltura];
NSString* alamoNome = [alamo getNome];
Cálculos numéricos
Os cálculos numéricos em Objective-C tem
forma idêntica às demais linguagens de
programação:
int a= 10;
int b = 2;
int resultado = (a*b) + (a/b);
Pegar dado do Usuário
int usuario;
NSLog(@"Digite um número de
repetições para sua estrutura:");
scanf("%i", &usuario);
@property e @synthesize
Para funções que devem atribuir um valor a
uma variável da classe, a Apple criou uma
forma de facilitar esta atribuição:
Antes: -(void) setIdade: int i;
Agora: @porperty int idade;
Antes: -(void) setIdade: int i{idade=i;}
Agora: @synthesize idade;
-> (no main): Objeto.idade = 20;
Passar mais de uma var para Método
//em interface
-(void) idadePeso: (int) i : (int) p;
//em implementation
-(void) idadePeso:(int)i :(int)p{
idade = i;
peso = p;
}
//no corpo do main
[object idadePeso:22 :86];
Herança de Classes
- Criar classes filhas que herdam características da classe Pai.
- Tudo é herdado: variáveis, métodos, etc.
- Após ter uma classe setada, siga o exemplo:
#import "Pessoas.h"
@interface Filhos : Pessoas;
-(void) imprimirFilho;
@end
@implementation Filhos
-(void) imprimirFilho{
NSLog(@"%@", nome);}
@end
//Classe Filho / Herança
Filhos * murilo = [[Filhos alloc] init];
murilo.nome = @"Murilo";
[murilo imprimirFilho];
Classe Retângulo Parte 1 - Herança
@interface Retangulo : NSObject{
int altura, largura;}
@property int altura, largura;
-(int) area;
-(int) perimetro;
-(void) setAL:(int) a : (int) l; //Sim, mesmo com o property, coloca-se um comando
// para setar as variáveis.
// explicado mais a frente
@end
Retangulo * r = [[Retangulo alloc] init];
[r setAL:4:6]; // 4 para altura e 6 para largura
NSLog(@"O tamanho do retângulo é: %i x %i", r.altura, r.largura);
NSLog(@"Área = %i e Perímetro = %i", [r area], [r perimetro]);
Classe Retângulo Parte 2 - Herança
#import "Retangulo.h"
@interface Quadrado : Retangulo
-(void) setLado:(int) lado;
-(int) retornaLado;
@end
@implementation Quadrado : Retangulo
-(void) setLado:(int) lado{
[self setAL:lado:lado];}
-(int) retornaLado{
return altura;}
@end
// no main:
Quadrado * q = [[Quadrado alloc] init];
[q setLado: 10];
NSLog(@"Lado = %i", [q retornaLado]);
NSLog(@"Área = %i e Perímetro = %i", [q area], [q perimetro]);
- Note que é possível admitir que area e perimetro façam parte do Quadrado q mesmo não declarando
esses dentro da @interface nem da @implementation. Isso porque quando é uma Classe Herdeira, todas as
características da Classe Pai são HERDADAS.
Polimorfismo
- No Objective-c, é possível acrescetar métodos com o mesmo
nome para classes diferentes.
- Simplesmente, porque a chamada dos métodos é bem
particular.
Exemplo:
[ObjetoDaClasse1 somarNumeros];
e
[ObjetoDaClasse2 somarNumeros];
Tipo de Dado: id
- Este novo tipo de dado id é genérico e pode se associar a qualquer outro tipo de
dado, por exemplo: int, char, float, bool, etc.
- O id também é possível se associar a objetos, por exemplo: id nome = Objeto.
- A partir daí, é possível sempre chamar o Objeto como sendo nome da classe id.
EXEMPLO:
Numeros * n = [[Numeros alloc] init];
id exemploID = n;
[exemploID setNum:10 :15];
[exemploID add];
[exemploID imprimir];
Ignorando Erros de Programação
@try{
//o que quer testar}
@catch (NSException * e) {
NSLog(@"Existe um erro aqui"); // mensagem de erro ou opção
caso apresente um erro acima}
- Sem o try e o catch, caso na execução do programa for
encontrado um erro o programa pararia.
- Com o try e o catch, todas linhas de programação dentro do
try podem dar erro e o programa não parará sua execução, ou
seja, todas as linhas após o catch serão executadas.
Controle de Variáveis
Private: @private
- Declarado dentro da interface da Classe
- Declara variáveis restritas da Classe, ou seja,
nenhum método ou outra classe podem utilizar
estas variáveis.
Protected: @protected
- Declarado dentro da interface da Classe
- Declara variáveis protegidas da Classe, mas
que podem ser utilizadas por métodos e sub-
classes.
Controle de Variáveis - Exemplos
Private: @private
@interface Classe : NSObject{
@private
int a, b;
}
Protected: @protected
@interface Classe : NSObject{
@protected
int c, d;
}
Controle de Variáveis - Exemplos 2
Private e Protected:
@interface Classe : NSObject{
@private
int a, b;
char c;
@protected
int d, e;
char f;
}
Variáveis Globais
- Variáveis Globais são declaradas e atribuídas antes do main();
Exemplo:
int gTeste = 50; //utiliza-se normalmente 'g' antes no nome da variável global para identifica-la
int main (int argc, const char * argv[]) { ... }
@implementation VariavelGlobal
-(void) setVarGlob: (int) g{
extern int gNumero;
gNumero = g;}
-(void) imprimir{
extern int gNumero;
NSLog(@"O novo valor da variável global gNumero é: %in", gNumero);}
@end
//no main()
NSLog(@"Variável Global gNumero = %in", gNumero);
VariavelGlobal * var = [[VariavelGlobal alloc] init];
[var setVarGlob:20];
[var imprimir];
Variáveis Estáticas
CONTINUA ...

Mais conteúdo relacionado

Mais procurados

Programação Estruturada 2 - Curso Completo
Programação Estruturada 2 - Curso CompletoProgramação Estruturada 2 - Curso Completo
Programação Estruturada 2 - Curso Completothomasdacosta
 
Programação Orientada a Objeto(POO)
Programação Orientada a Objeto(POO)Programação Orientada a Objeto(POO)
Programação Orientada a Objeto(POO)Carlos Alberto
 
Desenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcadosDesenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcadosRodrigo Almeida
 
Java orientação a objetos (variaveis de instancia e metodos)
Java   orientação a objetos (variaveis de instancia e metodos)Java   orientação a objetos (variaveis de instancia e metodos)
Java orientação a objetos (variaveis de instancia e metodos)Armando Daniel
 
Java 09 Heranca Reescrita Polimorfismo
Java 09 Heranca Reescrita PolimorfismoJava 09 Heranca Reescrita Polimorfismo
Java 09 Heranca Reescrita PolimorfismoRegis Magalhães
 
Teste de software - Processo de Verificação e Validação
Teste de software - Processo de Verificação e ValidaçãoTeste de software - Processo de Verificação e Validação
Teste de software - Processo de Verificação e ValidaçãoJoeldson Costa Damasceno
 
Introdução básica ao JavaScript
Introdução básica ao JavaScriptIntrodução básica ao JavaScript
Introdução básica ao JavaScriptCarlos Eduardo Kadu
 
Prática de laboratório utilizando views, stored procedures e triggers
Prática de laboratório   utilizando views, stored procedures e triggersPrática de laboratório   utilizando views, stored procedures e triggers
Prática de laboratório utilizando views, stored procedures e triggersDaniel Maia
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVAMoises Omena
 
PHP for Adults: Clean Code and Object Calisthenics
PHP for Adults: Clean Code and Object CalisthenicsPHP for Adults: Clean Code and Object Calisthenics
PHP for Adults: Clean Code and Object CalisthenicsGuilherme Blanco
 
Introdução a poo
Introdução a pooIntrodução a poo
Introdução a pooSedu
 
Aula 04 PHP - Utilizando Funções e Manipulando Arquivos
Aula 04 PHP - Utilizando Funções e Manipulando ArquivosAula 04 PHP - Utilizando Funções e Manipulando Arquivos
Aula 04 PHP - Utilizando Funções e Manipulando ArquivosDaniel Brandão
 
JAVA - ENCAPSULAMENTO
JAVA - ENCAPSULAMENTOJAVA - ENCAPSULAMENTO
JAVA - ENCAPSULAMENTOAndré Victor
 

Mais procurados (20)

Programação Estruturada 2 - Curso Completo
Programação Estruturada 2 - Curso CompletoProgramação Estruturada 2 - Curso Completo
Programação Estruturada 2 - Curso Completo
 
Aula03 - JavaScript
Aula03 - JavaScriptAula03 - JavaScript
Aula03 - JavaScript
 
Programação Orientada a Objeto(POO)
Programação Orientada a Objeto(POO)Programação Orientada a Objeto(POO)
Programação Orientada a Objeto(POO)
 
Desenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcadosDesenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcados
 
Java orientação a objetos (variaveis de instancia e metodos)
Java   orientação a objetos (variaveis de instancia e metodos)Java   orientação a objetos (variaveis de instancia e metodos)
Java orientação a objetos (variaveis de instancia e metodos)
 
Java 09 Heranca Reescrita Polimorfismo
Java 09 Heranca Reescrita PolimorfismoJava 09 Heranca Reescrita Polimorfismo
Java 09 Heranca Reescrita Polimorfismo
 
Arrays em java
Arrays em javaArrays em java
Arrays em java
 
JAVA - Orientação a Objetos
JAVA - Orientação a ObjetosJAVA - Orientação a Objetos
JAVA - Orientação a Objetos
 
Teste de software - Processo de Verificação e Validação
Teste de software - Processo de Verificação e ValidaçãoTeste de software - Processo de Verificação e Validação
Teste de software - Processo de Verificação e Validação
 
Introdução básica ao JavaScript
Introdução básica ao JavaScriptIntrodução básica ao JavaScript
Introdução básica ao JavaScript
 
Teste de Software - Introdução
Teste de Software - IntroduçãoTeste de Software - Introdução
Teste de Software - Introdução
 
Prática de laboratório utilizando views, stored procedures e triggers
Prática de laboratório   utilizando views, stored procedures e triggersPrática de laboratório   utilizando views, stored procedures e triggers
Prática de laboratório utilizando views, stored procedures e triggers
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVA
 
Gof design patterns
Gof design patternsGof design patterns
Gof design patterns
 
PHP for Adults: Clean Code and Object Calisthenics
PHP for Adults: Clean Code and Object CalisthenicsPHP for Adults: Clean Code and Object Calisthenics
PHP for Adults: Clean Code and Object Calisthenics
 
Programação Orientado a Objetos
Programação Orientado a ObjetosProgramação Orientado a Objetos
Programação Orientado a Objetos
 
Introdução a poo
Introdução a pooIntrodução a poo
Introdução a poo
 
Node.js e Express
Node.js e ExpressNode.js e Express
Node.js e Express
 
Aula 04 PHP - Utilizando Funções e Manipulando Arquivos
Aula 04 PHP - Utilizando Funções e Manipulando ArquivosAula 04 PHP - Utilizando Funções e Manipulando Arquivos
Aula 04 PHP - Utilizando Funções e Manipulando Arquivos
 
JAVA - ENCAPSULAMENTO
JAVA - ENCAPSULAMENTOJAVA - ENCAPSULAMENTO
JAVA - ENCAPSULAMENTO
 

Semelhante a Objetive-C Guia Completo

RevisãoCompactaFuncoesPonteiro.pptx
RevisãoCompactaFuncoesPonteiro.pptxRevisãoCompactaFuncoesPonteiro.pptx
RevisãoCompactaFuncoesPonteiro.pptxClaudia Ferlin
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao javaArmando Daniel
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem Capolllorj
 
DOJO - TDD com C++
DOJO - TDD com C++DOJO - TDD com C++
DOJO - TDD com C++thiagodp
 
TDD em C++
TDD em C++TDD em C++
TDD em C++thiagodp
 
Refatoração de código com Capitão Nascimento versão completa
Refatoração de código com Capitão Nascimento versão completaRefatoração de código com Capitão Nascimento versão completa
Refatoração de código com Capitão Nascimento versão completaEduardo Bregaida
 
Tutorial dev cpp 002 - criação, leitura e alteração de arquivos
Tutorial dev cpp   002 - criação, leitura e alteração de arquivosTutorial dev cpp   002 - criação, leitura e alteração de arquivos
Tutorial dev cpp 002 - criação, leitura e alteração de arquivosFlávio Freitas
 
Ruby - Criando código para máquinas e humanos
Ruby - Criando código para máquinas e humanosRuby - Criando código para máquinas e humanos
Ruby - Criando código para máquinas e humanosGregorio Kusowski
 
Escrevendo modulos python com rust
Escrevendo modulos python com rustEscrevendo modulos python com rust
Escrevendo modulos python com rustBruno Rocha
 
Comandos de Controle de Programa em C
Comandos de Controle de Programa em CComandos de Controle de Programa em C
Comandos de Controle de Programa em CElaine Cecília Gatto
 
Aop Aspect J 1.5.4 Capitulo 04
Aop Aspect J 1.5.4 Capitulo 04Aop Aspect J 1.5.4 Capitulo 04
Aop Aspect J 1.5.4 Capitulo 04Diego Pacheco
 

Semelhante a Objetive-C Guia Completo (20)

RevisãoCompactaFuncoesPonteiro.pptx
RevisãoCompactaFuncoesPonteiro.pptxRevisãoCompactaFuncoesPonteiro.pptx
RevisãoCompactaFuncoesPonteiro.pptx
 
PHP fora da Web
PHP fora da WebPHP fora da Web
PHP fora da Web
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao java
 
PowerShell
PowerShellPowerShell
PowerShell
 
Função malloc
Função mallocFunção malloc
Função malloc
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem C
 
DOJO - TDD com C++
DOJO - TDD com C++DOJO - TDD com C++
DOJO - TDD com C++
 
TDD em C++
TDD em C++TDD em C++
TDD em C++
 
Refatoração de código com Capitão Nascimento versão completa
Refatoração de código com Capitão Nascimento versão completaRefatoração de código com Capitão Nascimento versão completa
Refatoração de código com Capitão Nascimento versão completa
 
Aula5
Aula5Aula5
Aula5
 
Ling c
Ling cLing c
Ling c
 
Tutorial dev cpp 002 - criação, leitura e alteração de arquivos
Tutorial dev cpp   002 - criação, leitura e alteração de arquivosTutorial dev cpp   002 - criação, leitura e alteração de arquivos
Tutorial dev cpp 002 - criação, leitura e alteração de arquivos
 
Java para iniciantes
Java para iniciantesJava para iniciantes
Java para iniciantes
 
Apostila aed
Apostila aedApostila aed
Apostila aed
 
Objective-C
Objective-CObjective-C
Objective-C
 
Ruby - Criando código para máquinas e humanos
Ruby - Criando código para máquinas e humanosRuby - Criando código para máquinas e humanos
Ruby - Criando código para máquinas e humanos
 
Biblioteca Allegro
Biblioteca AllegroBiblioteca Allegro
Biblioteca Allegro
 
Escrevendo modulos python com rust
Escrevendo modulos python com rustEscrevendo modulos python com rust
Escrevendo modulos python com rust
 
Comandos de Controle de Programa em C
Comandos de Controle de Programa em CComandos de Controle de Programa em C
Comandos de Controle de Programa em C
 
Aop Aspect J 1.5.4 Capitulo 04
Aop Aspect J 1.5.4 Capitulo 04Aop Aspect J 1.5.4 Capitulo 04
Aop Aspect J 1.5.4 Capitulo 04
 

Objetive-C Guia Completo

  • 1. Objective-C Linguagem Nativa para Desenvolvimento iOS
  • 2. Importação de Bibliotecas Os arquivos de biblioteca possuem extensão ". h": #import <Foundation/Foundation.h>
  • 3. Main No Objective-C, a declaração da função main, ou função principal é feita da seguinte forma: int main(int argc, const char * argv[]) { return 0; }
  • 4. Alocação de memória Existem duas formas para se alocar memória: 1) Automático, sem necessidade de declarar o fim da utilização: @autoreleasepool {} 2) Declaração manual: NSAutoreleasePool * pool =[[NSAutoreleasePoll alloc] init]; E ao fim: [pool drain];
  • 5. "Print" Para escrever algo na tela, utiliza-se o seguinte comando: NSLog(@"TEXTO");
  • 6. "Hello, World!" #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) {@autoreleasepool { //insert codes here NSLog(@"Hello, World!");} return 0; }
  • 7. Declaração de Variáveis Assim como no C, C++ e Java, a declaração das variáveis no Objective-c inicia-se pelo tipo dela, como: bool, int, double, float, string, etc. Exemplo: int idade = 5; float altura = 1.8;
  • 8. Imprimindo Variáveis Para imprimir variáveis, funciona da mesma forma que no C e no C++, mudando apenas algumas variáveis de impressões: NSLog(@"Você tem %i anos e %f metros", idade, altura);
  • 9. Criando Classes No Objective-C, utiliza-se a o início @interface para declarar uma Classe. Segue exemplo: @interface NOME_DA_CLASSE: NSObject{ //declarando variáveis int idade; int peso; }
  • 10. Criando métodos //Um método normal, apenas de execução -(void) imprimir; //Métodos que irão alterar alguma variável deve declarar uma nova antes, como no exemplo -(void) setIdade: (int) i; -(void) setPeso: (int) p;
  • 11. Finalizar Classe Para dizer ao programa que já terminamos a declaração da Classe utilizamos o seguinte: @end
  • 12. Implementação dos Metodos da Classe @implementation Pessoas -(void) imprimir{ NSLog(@"Meu nome é Alamo e eu tenho %i anos e peso %i kilos", idade, peso);} -(void) setIdade:(int) i{ idade = i;} -(void) setPeso:(int) p{ peso = p;} @end
  • 13. Explicando Implementação Anteriormente existiu apenas a declaração, naquela etapa dizemos ao programa quais funções farão parte da classe declarada. Agora, programamos toda a execução da classe. Declarando toda as 3 funções ditas de que iriam existir.
  • 14. Variáveis auxiliares Note que novamente declaramos as variáveis i e p para as funções setIdade e setPeso, respectivamente. Estas variáveis auxiliares serão usadas todas as vezes que chamadas estas funções para realmente auxiliar na execução da função e atribuição de um novo valor.
  • 15. Finalizando Implementação Assim como na Classe, para finalizar declaramos: @end
  • 16. Brincando com Objetos Pessoas * alamo = [[Pessoas alloc] init]; alamo = [Pessoas alloc]; alamo = [alamo init]; [alamo setNome:@"Alamo"]; [alamo setIdade:20]; [alamo setPeso:110]; [alamo setAltura:1.84]; [alamo imprimir];
  • 18. Pegando dados de Objeto int alamoPeso = [alamo getPeso]; int alamoIdade = [alamo getIdade]; float alamoAltura = [alamo getAltura]; NSString* alamoNome = [alamo getNome];
  • 19. Cálculos numéricos Os cálculos numéricos em Objective-C tem forma idêntica às demais linguagens de programação: int a= 10; int b = 2; int resultado = (a*b) + (a/b);
  • 20. Pegar dado do Usuário int usuario; NSLog(@"Digite um número de repetições para sua estrutura:"); scanf("%i", &usuario);
  • 21. @property e @synthesize Para funções que devem atribuir um valor a uma variável da classe, a Apple criou uma forma de facilitar esta atribuição: Antes: -(void) setIdade: int i; Agora: @porperty int idade; Antes: -(void) setIdade: int i{idade=i;} Agora: @synthesize idade; -> (no main): Objeto.idade = 20;
  • 22. Passar mais de uma var para Método //em interface -(void) idadePeso: (int) i : (int) p; //em implementation -(void) idadePeso:(int)i :(int)p{ idade = i; peso = p; } //no corpo do main [object idadePeso:22 :86];
  • 23. Herança de Classes - Criar classes filhas que herdam características da classe Pai. - Tudo é herdado: variáveis, métodos, etc. - Após ter uma classe setada, siga o exemplo: #import "Pessoas.h" @interface Filhos : Pessoas; -(void) imprimirFilho; @end @implementation Filhos -(void) imprimirFilho{ NSLog(@"%@", nome);} @end //Classe Filho / Herança Filhos * murilo = [[Filhos alloc] init]; murilo.nome = @"Murilo"; [murilo imprimirFilho];
  • 24. Classe Retângulo Parte 1 - Herança @interface Retangulo : NSObject{ int altura, largura;} @property int altura, largura; -(int) area; -(int) perimetro; -(void) setAL:(int) a : (int) l; //Sim, mesmo com o property, coloca-se um comando // para setar as variáveis. // explicado mais a frente @end Retangulo * r = [[Retangulo alloc] init]; [r setAL:4:6]; // 4 para altura e 6 para largura NSLog(@"O tamanho do retângulo é: %i x %i", r.altura, r.largura); NSLog(@"Área = %i e Perímetro = %i", [r area], [r perimetro]);
  • 25. Classe Retângulo Parte 2 - Herança #import "Retangulo.h" @interface Quadrado : Retangulo -(void) setLado:(int) lado; -(int) retornaLado; @end @implementation Quadrado : Retangulo -(void) setLado:(int) lado{ [self setAL:lado:lado];} -(int) retornaLado{ return altura;} @end // no main: Quadrado * q = [[Quadrado alloc] init]; [q setLado: 10]; NSLog(@"Lado = %i", [q retornaLado]); NSLog(@"Área = %i e Perímetro = %i", [q area], [q perimetro]); - Note que é possível admitir que area e perimetro façam parte do Quadrado q mesmo não declarando esses dentro da @interface nem da @implementation. Isso porque quando é uma Classe Herdeira, todas as características da Classe Pai são HERDADAS.
  • 26. Polimorfismo - No Objective-c, é possível acrescetar métodos com o mesmo nome para classes diferentes. - Simplesmente, porque a chamada dos métodos é bem particular. Exemplo: [ObjetoDaClasse1 somarNumeros]; e [ObjetoDaClasse2 somarNumeros];
  • 27. Tipo de Dado: id - Este novo tipo de dado id é genérico e pode se associar a qualquer outro tipo de dado, por exemplo: int, char, float, bool, etc. - O id também é possível se associar a objetos, por exemplo: id nome = Objeto. - A partir daí, é possível sempre chamar o Objeto como sendo nome da classe id. EXEMPLO: Numeros * n = [[Numeros alloc] init]; id exemploID = n; [exemploID setNum:10 :15]; [exemploID add]; [exemploID imprimir];
  • 28. Ignorando Erros de Programação @try{ //o que quer testar} @catch (NSException * e) { NSLog(@"Existe um erro aqui"); // mensagem de erro ou opção caso apresente um erro acima} - Sem o try e o catch, caso na execução do programa for encontrado um erro o programa pararia. - Com o try e o catch, todas linhas de programação dentro do try podem dar erro e o programa não parará sua execução, ou seja, todas as linhas após o catch serão executadas.
  • 29. Controle de Variáveis Private: @private - Declarado dentro da interface da Classe - Declara variáveis restritas da Classe, ou seja, nenhum método ou outra classe podem utilizar estas variáveis. Protected: @protected - Declarado dentro da interface da Classe - Declara variáveis protegidas da Classe, mas que podem ser utilizadas por métodos e sub- classes.
  • 30. Controle de Variáveis - Exemplos Private: @private @interface Classe : NSObject{ @private int a, b; } Protected: @protected @interface Classe : NSObject{ @protected int c, d; }
  • 31. Controle de Variáveis - Exemplos 2 Private e Protected: @interface Classe : NSObject{ @private int a, b; char c; @protected int d, e; char f; }
  • 32. Variáveis Globais - Variáveis Globais são declaradas e atribuídas antes do main(); Exemplo: int gTeste = 50; //utiliza-se normalmente 'g' antes no nome da variável global para identifica-la int main (int argc, const char * argv[]) { ... } @implementation VariavelGlobal -(void) setVarGlob: (int) g{ extern int gNumero; gNumero = g;} -(void) imprimir{ extern int gNumero; NSLog(@"O novo valor da variável global gNumero é: %in", gNumero);} @end //no main() NSLog(@"Variável Global gNumero = %in", gNumero); VariavelGlobal * var = [[VariavelGlobal alloc] init]; [var setVarGlob:20]; [var imprimir];