alguns apectos sobre objective
TRANSCRIPT
![Page 1: Alguns Apectos Sobre Objective](https://reader036.vdocuments.com.br/reader036/viewer/2022073116/54e3ba994a79591e5d8b496e/html5/thumbnails/1.jpg)
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](https://reader036.vdocuments.com.br/reader036/viewer/2022073116/54e3ba994a79591e5d8b496e/html5/thumbnails/2.jpg)
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](https://reader036.vdocuments.com.br/reader036/viewer/2022073116/54e3ba994a79591e5d8b496e/html5/thumbnails/3.jpg)
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](https://reader036.vdocuments.com.br/reader036/viewer/2022073116/54e3ba994a79591e5d8b496e/html5/thumbnails/4.jpg)
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](https://reader036.vdocuments.com.br/reader036/viewer/2022073116/54e3ba994a79591e5d8b496e/html5/thumbnails/5.jpg)
// 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](https://reader036.vdocuments.com.br/reader036/viewer/2022073116/54e3ba994a79591e5d8b496e/html5/thumbnails/6.jpg)
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](https://reader036.vdocuments.com.br/reader036/viewer/2022073116/54e3ba994a79591e5d8b496e/html5/thumbnails/7.jpg)
-(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](https://reader036.vdocuments.com.br/reader036/viewer/2022073116/54e3ba994a79591e5d8b496e/html5/thumbnails/8.jpg)
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](https://reader036.vdocuments.com.br/reader036/viewer/2022073116/54e3ba994a79591e5d8b496e/html5/thumbnails/9.jpg)
}
[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](https://reader036.vdocuments.com.br/reader036/viewer/2022073116/54e3ba994a79591e5d8b496e/html5/thumbnails/10.jpg)
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](https://reader036.vdocuments.com.br/reader036/viewer/2022073116/54e3ba994a79591e5d8b496e/html5/thumbnails/11.jpg)
→ 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.