Upload
alamo-saravali
View
12.714
Download
2
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
Objective-CLinguagem 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 hereNSLog(@"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áveisint 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çaFilhos * 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 larguraNSLog(@"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á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.
Controle de Variáveis - ExemplosPrivate: @private
@interface Classe : NSObject{@private
int a, b;}
Protected: @protected@interface Classe : NSObject{
@protectedint c, d;
}
Controle de Variáveis - Exemplos 2Private e Protected:
@interface Classe : NSObject{@private
int a, b;char c;
@protectedint 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-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];
Variáveis EstáticasCONTINUA ...