alguns apectos sobre objective

11
Alguns aspectos sobre objective-C Factores a ter em atenção: Case sensitive; O nome das classes deve ser capitalizado (ex: Aula); Nas variáveis os nomes começam com minúscula. A palavra seguinte capitalizada (ex: intVariavel). Muitos conceitos são os mesmos de outras linguagens de programação. Exemplo primeiro programa: #import <Foundation/Foundation.h> int main (int argc, constchar *arg[]) { //esta parte do código é gerada automáticamente com o template do xcode NSLog(@"Hello World!"); return 0; //existem várias palavras em objective-C começadas por NS (Next Step) } Comentários Para comentar o código, à semelhança de outras linguagens, utiliza-se: // Este é um comentário de linha /* Este é um Comentário de blocos de linhas */ Tipos de dados Os tipos de dados, são iguais aos de outras linguagens: Nome Formato char %c int %i float %f double %d

Upload: ana-marta-santos

Post on 17-Feb-2015

4 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Alguns Apectos Sobre Objective

Alguns aspectos sobre objective-C

Factores a ter em atenção: Case sensitive;

O nome das classes deve ser capitalizado (ex: Aula);

Nas variáveis os nomes começam com minúscula. A palavra seguinte

capitalizada (ex: intVariavel).

Muitos conceitos são os mesmos de outras linguagens de programação.

Exemplo primeiro programa:

#import <Foundation/Foundation.h>

int main (int argc, constchar *arg[]) {

//esta parte do código é gerada automáticamente com o template do xcode

NSLog(@"Hello World!");

return 0;

//existem várias palavras em objective-C começadas por NS (Next Step)

}

Comentários

Para comentar o código, à semelhança de outras linguagens, utiliza-se:

// Este é um comentário de linha

/* Este é um

Comentário

de blocos de

linhas */

Tipos de dados Os tipos de dados, são iguais aos de outras linguagens:

Nome Formato

char %c

int %i

float %f

double %d

Page 2: Alguns Apectos Sobre Objective

Declaração e inicialização de variáveis

int i;

float f = 4,7;

char c ='a' ;

Operações com variaveis

int x=4

NSLog (@”x é %i” , x);

Operadores aritméticos

+ Soma;

- Subtracção;

* Multiplicação;

/ Divisão;

% Módulo;

Operadores relacionais e equivalentes == Significa “igual a” .

!= Significa “diferente de”

> Significa “maior que”

< Significa “menor que”

>= Significa “maior ou igual”

<= Significa “menor ou igual”

Atribuições Compostas Estes operadores permitem que sejam realizadas operações matemáticas e que a atribuição

do resultado seja apresentada de maneira simplificada.

Os operadores são:

+=

-=

*=

/=

%=

x+=1; // Equivale a x=x+1;

x-=3; // Equivale a x=x-3;

x*=2; // Equivale a x=x*2;

Page 3: Alguns Apectos Sobre Objective

x/=y; // Equivale a x=x/y;

x*=y+z; // Equivale a x=x*(y+z);

x%=2; // Equivale a x=x%2;

Tipos de dados Booleanos

Os valores que podem assumir são YES ou NO.

Ex:

BOOL saoIguais (int x, int y)

if (x==y) return YES;

else return NO;

Estrutura Condicional

If e If Else

Ex:

int a=15;

int b=16;

if (a==b) NSLog (@"igual");

else NSLog (@"não é igual")

While e For

Exemplos:

Ciclo While

while (a==b){

//faz qualquer coisa

}

Ciclo For

for (int i=0; i>15; i++){

//faz qualquer coisa

}

Page 4: Alguns Apectos Sobre Objective

Switch

Ex:

switch (a){

case 1: NSLog (@"a é 1"); break;

case 2: NSLog (@"a é 2"); break;

case 3: NSLog (@"a é 3"); break;

case 4: NSLog (@"a é 4"); break;

default: NSLog (@" a é desconhecido"); break;

} //fim do switch

Estes são alguns exemplos sobre a lógica de programação, e parte-se do princípio

que já são dados adquiridos anteriormente. Serve apenas como exemplo á introdução

do objective-C.

Objective-C – Classes

main.m (pode ser considerada a função principal)

Como exemplo, se pretender criar uma classe com o nome de quadrado, o xcode cria dois

ficheiros:

rectangulo.h (aqui é onde estão os nossos métodos e variáveis como por exemplo o

nome, return type e argumentos).

rectangulo.m

Os ficheiros que tiverem a extensão .m, são as chamadas classes de implementação. É onde se

vai escrever todo o código que executa tudo o que está descrito no ficheiro de interface

Os ficheiros que tiverem a extensão .h, são as chamadas classes de interface. É onde se define a

lista de todos os métodos e propriedades que a classe vai utilizar.

Exemplo @interface (.h):

#import <Foundation/Foundation.h>

@interface Rectangulo : NSObject {

// aqui estão definidas as variáveis

@private int width;

@private int height;

@private int area;

}

Page 5: Alguns Apectos Sobre Objective

// aqui estão definidos os métodos

-(void) setWidth : (int) w;

-(void) setHeight : (int) h;

-(void) area;

// -(void) é o que vai retornar;

// setWidth – nome do método;

// int(w) – argumento que o método vai receber

@end

Exemplo de Implementation file (.m):

#import "Rectangulo.h"

@implementation Rectangulo

-(void) setWidth:(int)w {

width = w;

}

-(void) setHeight:(int)h {

height = h;

}

-(void) area {

area = height * width;

NSLog(@"A area do rectangulo é %i" ,area);

}

@end

A classe Rectangulo está definida, agora terá de ser usada também na classe principal (main.m).

#import <UIKit/UIKit.h>

#import "Rectangulo.h"

int main(int argc, const char *argv[])

{

Rectangulo *rect =[[Rectangulo alloc]init];

[rect setHeight:2];

[rect setWidth:7];

[rect area];

[rect release];

//sempre que utiliza uma instancia, no final terá sempre de ser libertada

return 0;

}

Os métodos devem sempre ficar dentro dos [ ... ] (ao contrário de outras linguagens), quando

são chamados.

Resumindo o que deve constar em cada um dos ficheiros:

Rectangulo.h

@interface

@end

Page 6: Alguns Apectos Sobre Objective

Rectangulo.m

@implementation

@end

main.m

#import "Rectangulo.h"

Multiplos Argumentos

Até agora foi utilizado apenas um argumento. Pode em todo o caso ter necessidade de criar mais

em simultâneo.

Ex:

-(void) metodoUm:(int) a; //Apenas um argumento

-(void) metodoDois:(int) b : (int) c; //Dois Argumentos

Como devem ser chamados:

[metodoUm : 4]; //chama o método um

[metodoDois : 8 : 9]; //chama o método dois com dois argumentos

Como em todas as linguagens, existem constructores e destructores.

Constructor:

-(id) init {

self=[super init];

if (self!=nil) {

//as inicializações ficariam aqui posicionadas

}

return self

}

Destructor:

Page 7: Alguns Apectos Sobre Objective

-(void) dealloc {

//liberta os objetos adquiridos aqui

[superdealloc];

}

Strings.

Como declarar:

NSString *str;

Como lhe atribuir um valor:

NSString *str2=@"olá";

Como registar (imprimir) a String (NSLog):

NSLog(@"%@ ", str2);

existem alguns métodos já criados que podemos usar com a string:

int x = [str2 lenght]; //para ver o comprimento da string

ou então:

str = [str2 uppercaseString]; //se quiser que a primeira letra da string fique maiuscula

Mutable Strings

Se quiser criar uma String e pretender modificar o seu conteúdo, deve criar uma mutable String.

Como declarar.

String normal - NSString *str=@"O meu nome é";

Mutable String - NSMutableString *mutstr;

Como lhe atribuir um valor:

mutstr =[NSMutableString StringWithFormat :@"Esta é uma mutable String"];

Como posso manipular os dados dentro de uma String deste tipo:

mutstr = [NSMutableString stringWithStrings: str];

Neste exemplo, o que vai acontecer é que o conteúdo da String mutstr “Esta é uma mutable

String” vai ser substituído pelo que estiver em “stringWithStrings : str”. Olhando para o

exemplo da string nrmal, o str contém a string “O meu nome é”.

Page 8: Alguns Apectos Sobre Objective

Se quiser adicionar mais uma string:

[mutstr insertString:@"Ricardo" atIndex:4];

Basta utilizar o método insertString e atribuir-lhe uma string indicando a que indexe vai ser

atribuido:

O – Index 0

meu – Index 1

nome – Index 2

é – Index 3

A string definida irá para o index 4. Fica então “O meu nome é Ricardo”.

AppendString:

É muito utilizado quando se pretende adicionar algo no final da string.

[mutstr appendString:@"Nunes"];

O resultado ficará “O meu nome é Ricardo Nunes”.

Arrays

O objective C lida com os elemntos dentro dos arrays como objetos.

NSArray *gaveta = [NSArray arrayWithObjects:@"guardanapos", @"garfos",

@"facas", nil];

//O “nil” significa que é o final do array.

Se pretender aceder a algum elemento:

NSLog(@"%@", [gaveta objectAtIndex:2];

Mutable Arrays

Este tipo de array deve ter uma capacidade atribuída.

NSMutableArray *counter = [NSMutableArray arrayWithCapacity:24]

for ( int i=0;i<100;i+2){

[counter addObject:[NSNumber numberWithInteger:i]];

Page 9: Alguns Apectos Sobre Objective

}

[counter count] //retorna o comprimento do array

NSLog (@"numero=%i", [counter objectAtIndex: x] integerValue);

Mutable Arrays

NSMutableArray *Counter = [NSMutableArray arrayWithCapacity:24]

//Este tipo de array deve ter uma capacidade atribuída.

For (int i = 0;i < 100; i+2) {

[counter addObject : [NSNumber numberWithInteger: i]]; }

[counter Count] //returns length of array

NSLog (@ “number = % I”, [counter ObjectAtIndex: x] integerValue];

NSDictionary

NSMutableDictionary *mydict = [NSMutableDictionary dictionary];

[mydict setObject: @"Hello, este é um exemplo de dicionário” for Key: @ “bem vindo”];

NSLog (@ “%@”,[mydict objectForKey: @"bem vindo"]);

//O NSDictionary é compost pelo objecto e pela chave (Key).

Synthesized Accessor Methody

@ property → .h

@ synthesize → .m

Rectangle *rect = [[rectangle alloc]init];

rect.width = 40;

rect.height = 20;

[rec.print];

Herança

@interface Sphere: Circle {

// ... código

}

Para fazer o override de um método:

Page 10: Alguns Apectos Sobre Objective

3 condições:

Deve ter o mesmo nome;

Deve retomar o mesmo tipo;

Deve ter o mesmo nº de argumentos.

Type ID

Este tipo, pode conter qualquer valor

Int x = 50;

Id y;

Y = x // 0 y fica 50

NSLog (@ “%@”, y);

Char c = ‘a’;

Y=c;

NSLog (@ “%@”, y);

Introdução ao XCODE

Views

3 ficheiros:

View1.h

View1.m

View1.xib (nib)

Em vez de ser main (){

Passa a ser ViewDidLoad (){

{

Tipos de aplicações:

→ Single View Application → Só tem uma View, a aplicação corre toda numa única vista.

Aplicação mais simples.

Page 11: Alguns Apectos Sobre Objective

→ Utility Application → Semelhante à Single View. A aplicação corre numa View, e se

carregar no info, aparece outra janela com info.

→ Page Based Application → Boa para livros e histórias. Permite mudar de páginas.

→ Tabbled Application → Aplicação que contém várioas Views/Tabs. Tem uma Tab bar.

→ Master.Detal Application → Aparecem duas vistas no ecrã. Boa para Tablets. Costuma

ter, à esquerda, a View principal e na esquerda a segunda vista associada a ela.

Este ficheiro serve apenas de complemento com relação á Linguagem Objective-C.