33
Objective-C Linguagem Nativa para Desenvolvimento iOS

Aprendendo objective c - parte 1

Embed Size (px)

DESCRIPTION

Parte inicial do aprendizado com Objective-C, a linguagem para a programação nativa de aplicativos para iOS. Nesta primeira parte, serve mais como apresentação do TO-DO lista de algumas funcionalidades básicas. É crucial ter noção sobre Programação Orientada à Objetos (POO).

Citation preview

Page 1: Aprendendo objective c - parte 1

Objective-CLinguagem Nativa para Desenvolvimento iOS

Page 2: Aprendendo objective c - parte 1

Importação de Bibliotecas

Os arquivos de biblioteca possuem extensão ".h":

#import <Foundation/Foundation.h>

Page 3: Aprendendo objective c - parte 1

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;}

Page 4: Aprendendo objective c - parte 1

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];

Page 5: Aprendendo objective c - parte 1

"Print"

Para escrever algo na tela, utiliza-se o seguinte comando:

NSLog(@"TEXTO");

Page 6: Aprendendo objective c - parte 1

"Hello, World!"

#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) {@autoreleasepool {

//insert codes hereNSLog(@"Hello, World!");}return 0;

}

Page 7: Aprendendo objective c - parte 1

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;

Page 8: Aprendendo objective c - parte 1

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);

Page 9: Aprendendo objective c - parte 1

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áveisint idade;int peso;}

Page 10: Aprendendo objective c - parte 1

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;

Page 11: Aprendendo objective c - parte 1

Finalizar Classe

Para dizer ao programa que já terminamos a declaração da Classe utilizamos o seguinte:

@end

Page 12: Aprendendo objective c - parte 1

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

Page 13: Aprendendo objective c - parte 1

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.

Page 14: Aprendendo objective c - parte 1

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.

Page 15: Aprendendo objective c - parte 1

Finalizando Implementação

Assim como na Classe, para finalizar declaramos:

@end

Page 16: Aprendendo objective c - parte 1

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];

Page 17: Aprendendo objective c - parte 1

String

NSString* nome = @"Alamo";

Page 18: Aprendendo objective c - parte 1

Pegando dados de Objeto

int alamoPeso = [alamo getPeso];int alamoIdade = [alamo getIdade];float alamoAltura = [alamo getAltura];NSString* alamoNome = [alamo getNome];

Page 19: Aprendendo objective c - parte 1

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);

Page 20: Aprendendo objective c - parte 1

Pegar dado do Usuário

int usuario;NSLog(@"Digite um número de repetições para sua estrutura:");scanf("%i", &usuario);

Page 21: Aprendendo objective c - parte 1

@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;

Page 22: Aprendendo objective c - parte 1

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];

Page 23: Aprendendo objective c - parte 1

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çaFilhos * murilo = [[Filhos alloc] init];murilo.nome = @"Murilo";[murilo imprimirFilho];

Page 24: Aprendendo objective c - parte 1

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 larguraNSLog(@"O tamanho do retângulo é: %i x %i", r.altura, r.largura);NSLog(@"Área = %i e Perímetro = %i", [r area], [r perimetro]);

Page 25: Aprendendo objective c - parte 1

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.

Page 26: Aprendendo objective c - parte 1

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];

Page 27: Aprendendo objective c - parte 1

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];

Page 28: Aprendendo objective c - parte 1

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.

Page 29: Aprendendo objective c - parte 1

Controle de VariáveisPrivate: @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.

Page 30: Aprendendo objective c - parte 1

Controle de Variáveis - ExemplosPrivate: @private

@interface Classe : NSObject{@private

int a, b;}

Protected: @protected@interface Classe : NSObject{

@protectedint c, d;

}

Page 31: Aprendendo objective c - parte 1

Controle de Variáveis - Exemplos 2Private e Protected:

@interface Classe : NSObject{@private

int a, b;char c;

@protectedint d, e;char f;

}

Page 32: Aprendendo objective c - parte 1

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-laint 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 é: %i\n", gNumero);}@end

//no main()NSLog(@"Variável Global gNumero = %i\n", gNumero);VariavelGlobal * var = [[VariavelGlobal alloc] init];[var setVarGlob:20];[var imprimir];

Page 33: Aprendendo objective c - parte 1

Variáveis EstáticasCONTINUA ...