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 ...

Aprendendo objective c - parte 1

  • 1.
  • 2.
    Importação de Bibliotecas Osarquivos de biblioteca possuem extensão ". h": #import <Foundation/Foundation.h>
  • 3.
    Main No Objective-C, adeclaraçã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 Existemduas 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 algona tela, utiliza-se o seguinte comando: NSLog(@"TEXTO");
  • 6.
    "Hello, World!" #import <Foundation/Foundation.h> intmain(int argc, const char * argv[]) {@autoreleasepool { //insert codes here NSLog(@"Hello, World!");} return 0; }
  • 7.
    Declaração de Variáveis Assimcomo 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 imprimirvariá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étodonormal, 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 dizerao programa que já terminamos a declaração da Classe utilizamos o seguinte: @end
  • 12.
    Implementação dos Metodosda 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 existiuapenas 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 quenovamente 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 comona 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];
  • 17.
  • 18.
    Pegando dados deObjeto int alamoPeso = [alamo getPeso]; int alamoIdade = [alamo getIdade]; float alamoAltura = [alamo getAltura]; NSString* alamoNome = [alamo getNome];
  • 19.
    Cálculos numéricos Os cálculosnumé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 doUsuário int usuario; NSLog(@"Digite um número de repetições para sua estrutura:"); scanf("%i", &usuario);
  • 21.
    @property e @synthesize Parafunçõ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 deuma 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 Parte1 - 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 Parte2 - 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 deProgramaçã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áveisGlobais 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];
  • 33.