O documento descreve as características da programação orientada a objetos em Objective-C, incluindo a definição de classes, encapsulamento, herança, ciclo de vida de objetos e a classe NSString. É explicado como definir propriedades, getters e setters e como enviar mensagens entre objetos.
Sistema de Bibliotecas UCS - Cantos do fim do século
OOP ObjC
1. Programação Orientada a Objectos (OOP) - Parte 2: ObjC Jorge C. S. Cardoso, Luís Gustavo Martins jorgecardoso@ieee.org, lmartins@porto.ucp.pt Cursos de Verão na Católica 2010
2.
3. Classe Veículo em ObjC Interface - Veiculo.h O ObjC "obriga" ao uso de getters e setters --> Encapsulamento! #import <Foundation/Foundation.h> @interface Veiculo : NSObject { // instance variables int velMax; int velActual; int numRodas; int numLugares; } //setters and getters - (void) setVelMax: (int)vel; - (int) velMax; - (void) setVelActual: (int)vel; - (int) velActual; - (void) setNumRodas: (int)numRodas; - (int) numRodas; - (void) setNumLugares: (int)numLugares; - (int) numLugares; // other method declarations - (void) arrancar; - (void) travar; - (void) acelerar; - (void) buzinar; - (BOOL) estaParado; - (void) mostrarEstado; @end
4.
5. Classe Veículo em ObjC Uso de Properties e Synthesized Getters e Setters #import <Foundation/Foundation.h> @interface Veiculo : NSObject { // instance variables int velMax; int velActual; int numRodas; int numLugares; } //setters and getters - (void) setVelMax: (int)vel; - (int) velMax; - (void) setVelActual: (int)vel; - (int) velActual; - (void) setNumRodas: (int)numRodas; - (int) numRodas; - (void) setNumLugares: (int)numLugares; - (int) numLugares; // other method declarations - (void) arrancar; - (void) travar; - (void) acelerar; - (void) buzinar; - (BOOL) estaParado; - (void) mostrarEstado; @end #import <Foundation/Foundation.h> @interface Veiculo : NSObject { // instance variables int velMax; int velActual; int numRodas; int numLugares; } //properties @property velMax; @property velActual; @property numRodas, numLugares; // other method declarations - (void) arrancar; - (void) travar; - (void) acelerar; - (void) buzinar; - (BOOL) estaParado; - (void) mostrarEstado; @end
6. Classe Veículo em ObjC Uso de Properties e Synthesized Getters e Setters #import "Veiculo.h" @implementation Veiculo //setter and getters -(int)velMax { return velMax; } -(void) setVelMax: (int)vel { velMax = vel; } //... similar for other setter/getters //other methods -(void) arrancar { //implementação do método arrancar... } -(void) travar { // ... } //... other methods... @end #import "Veiculo.h" @implementation Veiculo //synthesized setter and getters @synthesize velMax; @synthesize velActual: @synthesize numRodas; @synthesize numLugares; //other methods -(void) arrancar { //implementação do método arrancar... } -(void) travar { // ... } //... other methods... @end
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28. ObjC: reponsabilidade pela vida de Objectos #import "Veiculo.h" @implementation Veiculo - (id)init { // allow superclass to initialize its state first if (self = [super init]) { marca = @"não definida"; //this is a NSString velMax = 120; velActual = 0; numRodas = 4; numLugares = 4; } return self; } //other method implementations... @end