SlideShare ist ein Scribd-Unternehmen logo
1 von 33
Downloaden Sie, um offline zu lesen
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 ...

Weitere ähnliche Inhalte

Was ist angesagt?

Curso Java Básico Aula 01: Introdução e Dicas para quem está Começando
Curso Java Básico Aula 01: Introdução e Dicas para quem está ComeçandoCurso Java Básico Aula 01: Introdução e Dicas para quem está Começando
Curso Java Básico Aula 01: Introdução e Dicas para quem está ComeçandoLoiane Groner
 
The Functional Programming Toolkit (NDC Oslo 2019)
The Functional Programming Toolkit (NDC Oslo 2019)The Functional Programming Toolkit (NDC Oslo 2019)
The Functional Programming Toolkit (NDC Oslo 2019)Scott Wlaschin
 
Estrutura de Dados Apoio (Tabela Hash)
Estrutura de Dados Apoio (Tabela Hash)Estrutura de Dados Apoio (Tabela Hash)
Estrutura de Dados Apoio (Tabela Hash)Leinylson Fontinele
 
The Functional Programmer's Toolkit (NDC London 2019)
The Functional Programmer's Toolkit (NDC London 2019)The Functional Programmer's Toolkit (NDC London 2019)
The Functional Programmer's Toolkit (NDC London 2019)Scott Wlaschin
 
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADEstrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADLeinylson Fontinele
 
Estrutura de Dados - Aula de revisão de C na prática
Estrutura de Dados - Aula de revisão de C na práticaEstrutura de Dados - Aula de revisão de C na prática
Estrutura de Dados - Aula de revisão de C na práticaLeinylson Fontinele
 
HOW TO CREATE A MODULE IN ODOO
HOW TO CREATE A MODULE IN ODOOHOW TO CREATE A MODULE IN ODOO
HOW TO CREATE A MODULE IN ODOOCeline George
 
Minicurso PHP básico
Minicurso PHP básicoMinicurso PHP básico
Minicurso PHP básicoCezar Souza
 
2016/01/27 - Aprendendo a programar com Python
2016/01/27 - Aprendendo a programar com Python2016/01/27 - Aprendendo a programar com Python
2016/01/27 - Aprendendo a programar com PythonJardel Weyrich
 
Banco de Dados - Modelo Lógico, Chave primária e Chave estrangeira
Banco de Dados - Modelo Lógico, Chave primária e Chave estrangeiraBanco de Dados - Modelo Lógico, Chave primária e Chave estrangeira
Banco de Dados - Modelo Lógico, Chave primária e Chave estrangeiraNatanael Simões
 
Linguagem C - Vetores, Matrizes e Funções
Linguagem C - Vetores, Matrizes e FunçõesLinguagem C - Vetores, Matrizes e Funções
Linguagem C - Vetores, Matrizes e FunçõesElaine Cecília Gatto
 
Domain Modeling Made Functional (KanDDDinsky 2019)
Domain Modeling Made Functional (KanDDDinsky 2019)Domain Modeling Made Functional (KanDDDinsky 2019)
Domain Modeling Made Functional (KanDDDinsky 2019)Scott Wlaschin
 
Padrões Arquiteturais - MVC, MVP e MVVM
Padrões Arquiteturais - MVC, MVP e MVVMPadrões Arquiteturais - MVC, MVP e MVVM
Padrões Arquiteturais - MVC, MVP e MVVMAricelio Souza
 

Was ist angesagt? (20)

Curso Java Básico Aula 01: Introdução e Dicas para quem está Começando
Curso Java Básico Aula 01: Introdução e Dicas para quem está ComeçandoCurso Java Básico Aula 01: Introdução e Dicas para quem está Começando
Curso Java Básico Aula 01: Introdução e Dicas para quem está Começando
 
The Functional Programming Toolkit (NDC Oslo 2019)
The Functional Programming Toolkit (NDC Oslo 2019)The Functional Programming Toolkit (NDC Oslo 2019)
The Functional Programming Toolkit (NDC Oslo 2019)
 
Estrutura de Dados Apoio (Tabela Hash)
Estrutura de Dados Apoio (Tabela Hash)Estrutura de Dados Apoio (Tabela Hash)
Estrutura de Dados Apoio (Tabela Hash)
 
Estrutura de dados - Filas
Estrutura de dados - FilasEstrutura de dados - Filas
Estrutura de dados - Filas
 
The Functional Programmer's Toolkit (NDC London 2019)
The Functional Programmer's Toolkit (NDC London 2019)The Functional Programmer's Toolkit (NDC London 2019)
The Functional Programmer's Toolkit (NDC London 2019)
 
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADEstrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
 
Estrutura de Dados - Aula de revisão de C na prática
Estrutura de Dados - Aula de revisão de C na práticaEstrutura de Dados - Aula de revisão de C na prática
Estrutura de Dados - Aula de revisão de C na prática
 
Modelagem de Dados
Modelagem de DadosModelagem de Dados
Modelagem de Dados
 
Aula 7 pc - estrutura
Aula 7   pc - estruturaAula 7   pc - estrutura
Aula 7 pc - estrutura
 
F# for C# Programmers
F# for C# ProgrammersF# for C# Programmers
F# for C# Programmers
 
HOW TO CREATE A MODULE IN ODOO
HOW TO CREATE A MODULE IN ODOOHOW TO CREATE A MODULE IN ODOO
HOW TO CREATE A MODULE IN ODOO
 
Minicurso PHP básico
Minicurso PHP básicoMinicurso PHP básico
Minicurso PHP básico
 
Estrutura de dados
Estrutura de dadosEstrutura de dados
Estrutura de dados
 
Introdução a python
Introdução a pythonIntrodução a python
Introdução a python
 
2016/01/27 - Aprendendo a programar com Python
2016/01/27 - Aprendendo a programar com Python2016/01/27 - Aprendendo a programar com Python
2016/01/27 - Aprendendo a programar com Python
 
Banco de Dados - Modelo Lógico, Chave primária e Chave estrangeira
Banco de Dados - Modelo Lógico, Chave primária e Chave estrangeiraBanco de Dados - Modelo Lógico, Chave primária e Chave estrangeira
Banco de Dados - Modelo Lógico, Chave primária e Chave estrangeira
 
Linguagem C - Vetores, Matrizes e Funções
Linguagem C - Vetores, Matrizes e FunçõesLinguagem C - Vetores, Matrizes e Funções
Linguagem C - Vetores, Matrizes e Funções
 
Introduction to c#
Introduction to c#Introduction to c#
Introduction to c#
 
Domain Modeling Made Functional (KanDDDinsky 2019)
Domain Modeling Made Functional (KanDDDinsky 2019)Domain Modeling Made Functional (KanDDDinsky 2019)
Domain Modeling Made Functional (KanDDDinsky 2019)
 
Padrões Arquiteturais - MVC, MVP e MVVM
Padrões Arquiteturais - MVC, MVP e MVVMPadrões Arquiteturais - MVC, MVP e MVVM
Padrões Arquiteturais - MVC, MVP e MVVM
 

Ähnlich wie 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
 

Ähnlich wie 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];