SlideShare ist ein Scribd-Unternehmen logo
1 von 52
Downloaden Sie, um offline zu lesen
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
Classe Veículo em ObjC ,[object Object],[object Object],[object Object],[object Object],[object Object],http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2010-winter
Classe Veículo em ObjC Interface  - Veiculo.h O ObjC &quot;obriga&quot; 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
Classe Veículo em ObjC Implementação  - Veiculo.m #import &quot;Veiculo.h&quot; @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 ,[object Object],[object Object],[object Object],[object Object],[object Object]
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
Classe Veículo em ObjC Uso de Properties e Synthesized Getters e Setters #import &quot;Veiculo.h&quot; @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 &quot;Veiculo.h&quot; @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
Classe Veículo em ObjC ,[object Object],[object Object],Num setter do tipo:      -(void) setVar: (SomeClass *)value Se o sintetizarmos com os seguintes modificadores, teremos  no corpo do setter (sintetizado)  as seguintes atribuições:      @property (assign) var       var = value; //simple assignation    @property (retain) var           var = [value retain]; //assignation with reference counter increment    @property (copy) var      var = [value copy]; //object is copied (must conform to the NSCopying protocol...)
Herança em ObjC ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2010-winter
ObjC: Métodos de Classe e de Instância ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
ObjC: Mensagens para Objectos ,[object Object],[object Object],[object Object],[object Object],[object Object],Veiculo *meuVeiculo; //assume this exists... [meuVeiculo trava]; [meuVeiculo setVelMax:300] //you wish!! ;-) [meuVeiculo vira:90 andPiscaPisca:YES]; int speed = [meuVeiculo velActual];
ObjC: Mensagens para Objectos ,[object Object],[object Object],[object Object],[object Object],Veiculo *meuVeiculo; //assume this exists... int speed1 = [meuVeiculo velActual];  //message int speed2 = meuVeiculo . velActual;  //dot syntax [meuVeiculo setVelActual: 120]; //message meuVeiculo.velActual = 60; //dot syntax
ObjC: Mensagens para Objectos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
ObjC:  self  e  super ,[object Object],[object Object],#import &quot;Veiculo.h&quot; @implementation Veiculo -(BOOL) isFamilyVehicle {      return ([self numLugares] >= 4); } //other method implementations... -(void) doSomething {      //call superclass implementation first...      [super doSomething];           //now do our own stuff...      int foo = bar;      //...  }
ObjC: tipos dinâmicos e est´ticos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
ObjC: ciclo de vida de objectos ,[object Object],[object Object],[object Object],[object Object],[object Object],Veiculo *meuVeiculo = nil; meuVeiculo =  [[Veiculo alloc] init] ; #import &quot;Veiculo.h&quot;  @implementation Veiculo  - (id)init  {       // allow superclass to initialize its state first       if ( self  = [ super   init ]) {          velMax = 120;          velActual = 0;          numRodas = 4;          numLugares = 4;      }       return  self ; }  @end
ObjC: ciclo de vida de objectos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
ObjC: ciclo de vida de objectos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
ObjC: ciclo de vida de objectos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
ObjC: ciclo de vida de objectos ,[object Object],http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2010-winter
ObjC: ciclo de vida de objectos ,[object Object],Veiculo *meuVeiculo = nil; meuVeiculo = [[Veiculo alloc] init]; [meuVeiculo setVelMax:120]; [meuVeiculo arranca]; [meuVeículo setVelActual: 50]; //... [meuVeiculo para];  //no more need for this object... [meuVeiculo release]; //meuVeiculo will be destroyed in case its retain //count is zero (i.e. no one else is pointing to it) //And in that case, sending messages to it will CRASH! [meuVeiculo arranca];//CRASH!!
ObjC: ciclo de vida de objectos ,[object Object],Veiculo *meuVeiculo = nil; meuVeiculo = [[Veiculo alloc] init]; [meuVeiculo setVelMax:120]; [meuVeiculo arranca]; [meuVeículo setVelActual: 50]; //... [meuVeiculo para];  //no more need for this object... [meuVeiculo release]; meuVeiculo = nil; //good programming practice! [meuVeiculo arranca];//No longer crashes!:-) No effect...
ObjC: ciclo de vida de objectos ,[object Object],[object Object],#import &quot;Veiculo.h&quot; @implementation Veiculo -dealloc { //this is an override of NSObject dealloc      //do any cleanup that is necessary...      //...      //when done, ask super to also clean itself up      [super dealloc]; //only time you call dealloc explicitly! } //other method implementations... @end
ObjC: a classe  NSString ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
ObjC: a classe  NSString ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
ObjC: apontadores nulos -  nil ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
ObjC:  Identidade versus Igualdade entre Objectos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
ObjC: reponsabilidade pela vida de Objectos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
ObjC: reponsabilidade pela vida de Objectos #import &quot;Veiculo.h&quot;  @implementation Veiculo  - (id)init  {       // allow superclass to initialize its state first       if (self = [super init]) {          marca = @&quot;não definida&quot;; //this is a NSString          velMax = 120;          velActual = 0;          numRodas = 4;          numLugares = 4;      }       return self; } //other method implementations...   @end
ObjC: reponsabilidade pela vida de Objectos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Setter para um objecto criado pelo nosso objecto Solução 1 (errada)
ObjC: reponsabilidade pela vida de Objectos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Setter para um objecto criado pelo nosso objecto Solução 2 (ainda errada)
ObjC: reponsabilidade pela vida de Objectos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Setter para um objecto criado pelo nosso objecto Solução 3a (CORRECTA!)
ObjC: reponsabilidade pela vida de Objectos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Setter para um objecto criado pelo nosso objecto Solução 3b (CORRECTA!)
ObjC: reponsabilidade pela vida de Objectos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Oh Yeah! Embrace the power!! ;-)
ObjC: reponsabilidade pela vida de Objectos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
ObjC: reponsabilidade pela vida de Objectos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
ObjC: reponsabilidade pela vida de Objectos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
ObjC: reponsabilidade pela vida de Objectos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
ObjC: reponsabilidade pela vida de Objectos ,[object Object],[object Object],[object Object],[object Object],NSMutableString *string = [[NSMutableString alloc] init];  // We are responsible for calling -release or -autorelease  [string autorelease]; NSMutableString *string = [NSMutableString string];  // The method name doesn’t indicate that we need to release it  // So don’t- we’re cool!
ObjC: reponsabilidade pela vida de Objectos ,[object Object],[object Object],[object Object],[object Object],[object Object]
ObjC: reponsabilidade pela vida de Objectos ,[object Object],http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2010-winter
ObjC: reponsabilidade pela vida de Objectos ,[object Object],http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2010-winter
ObjC: reponsabilidade pela vida de Objectos ,[object Object],http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2010-winter
ObjC: reponsabilidade pela vida de Objectos ,[object Object],http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2010-winter
ObjC: reponsabilidade pela vida de Objectos ,[object Object],http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2010-winter
ObjC: reponsabilidade pela vida de Objectos ,[object Object],http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2010-winter
ObjC: reponsabilidade pela vida de Objectos ,[object Object],http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2010-winter
ObjC: reponsabilidade pela vida de Objectos ,[object Object],http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2010-winter
ObjC: reponsabilidade pela vida de Objectos ,[object Object],http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2010-winter
ObjC: reponsabilidade pela vida de Objectos ,[object Object],http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2010-winter
ObjC: reponsabilidade pela vida de Objectos ,[object Object],[object Object],name = [NSMutableString string]; //autoreleased // We want to name to remain valid!  [name retain];  // ... // Eventually, we’ll release it (maybe in our -dealloc?)  [name release]; NOTA:  autorelease  não é Garbage Collection!! 
Exercício: Classe Calculator e Fraction ,[object Object],[object Object],[object Object],[object Object],#import <Foundation/Foundation.h> #import &quot;Fraction.h&quot; int main (int argc, const char * argv[]) {          NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; Fraction *frac1 = [[Fraction alloc] init];          Fraction *frac2 = [[Fraction alloc] init]; [frac1  setTo:  1  over:  3]; [frac1 print]; //print to console something like &quot;1/3&quot;          [frac2  setTo:  5  over:  4];          Fraction* result = [frac1 add: frac2]; //adds two fractions          [result print]; [frac1 release];          [frac2 release];          [result release] [pool drain]; return 0; }
Fim ,[object Object],[object Object],Jorge C. S. Cardoso, Luís Gustavo Martins jorgecardoso@ieee.org, lmartins@porto.ucp.pt http://slideshare.net/jorgecardoso (tag: cvc2010) Código fonte:  http://db.tt/AOFOfA2

Weitere ähnliche Inhalte

Was ist angesagt?

Threads 08: Executores e Futures
Threads 08: Executores e FuturesThreads 08: Executores e Futures
Threads 08: Executores e FuturesHelder da Rocha
 
Spock Framework
Spock FrameworkSpock Framework
Spock FrameworkIsmael
 
Grails - Destaques (para quem já sabe Java)
Grails - Destaques (para quem já sabe Java)Grails - Destaques (para quem já sabe Java)
Grails - Destaques (para quem já sabe Java)Douglas Mendes
 
Spock Framework 2
Spock Framework 2Spock Framework 2
Spock Framework 2Ismael
 
Threads 03: Ciclo de vida, aplicações e boas práticas
Threads 03: Ciclo de vida, aplicações e boas práticasThreads 03: Ciclo de vida, aplicações e boas práticas
Threads 03: Ciclo de vida, aplicações e boas práticasHelder da Rocha
 
Minicurso javascript
Minicurso javascriptMinicurso javascript
Minicurso javascriptLucas Aquiles
 
Threads 04 Variáveis atômicas
Threads 04 Variáveis atômicasThreads 04 Variáveis atômicas
Threads 04 Variáveis atômicasHelder da Rocha
 
Threads 06: Coleções concorrentes
Threads 06: Coleções concorrentesThreads 06: Coleções concorrentes
Threads 06: Coleções concorrentesHelder da Rocha
 
Escreva aplicações web assíncronas com python3 + tornado
Escreva aplicações web assíncronas com python3 + tornadoEscreva aplicações web assíncronas com python3 + tornado
Escreva aplicações web assíncronas com python3 + tornadoWilson Júnior
 
Threads 07: Sincronizadores
Threads 07: SincronizadoresThreads 07: Sincronizadores
Threads 07: SincronizadoresHelder da Rocha
 

Was ist angesagt? (20)

JavaScript Hacks
JavaScript HacksJavaScript Hacks
JavaScript Hacks
 
Threads 08: Executores e Futures
Threads 08: Executores e FuturesThreads 08: Executores e Futures
Threads 08: Executores e Futures
 
Javascript
JavascriptJavascript
Javascript
 
Spock Framework
Spock FrameworkSpock Framework
Spock Framework
 
Floggy-JustJava-2008-09-10
Floggy-JustJava-2008-09-10Floggy-JustJava-2008-09-10
Floggy-JustJava-2008-09-10
 
Grails - Destaques (para quem já sabe Java)
Grails - Destaques (para quem já sabe Java)Grails - Destaques (para quem já sabe Java)
Grails - Destaques (para quem já sabe Java)
 
Desenvolvimento iOS
Desenvolvimento iOSDesenvolvimento iOS
Desenvolvimento iOS
 
Dependency injection
Dependency injectionDependency injection
Dependency injection
 
Spock Framework 2
Spock Framework 2Spock Framework 2
Spock Framework 2
 
Doctrine2 Seminário PHP
Doctrine2 Seminário PHPDoctrine2 Seminário PHP
Doctrine2 Seminário PHP
 
Threads 09: Paralelismo
Threads 09: ParalelismoThreads 09: Paralelismo
Threads 09: Paralelismo
 
Threads 03: Ciclo de vida, aplicações e boas práticas
Threads 03: Ciclo de vida, aplicações e boas práticasThreads 03: Ciclo de vida, aplicações e boas práticas
Threads 03: Ciclo de vida, aplicações e boas práticas
 
Minicurso javascript
Minicurso javascriptMinicurso javascript
Minicurso javascript
 
Threads 04 Variáveis atômicas
Threads 04 Variáveis atômicasThreads 04 Variáveis atômicas
Threads 04 Variáveis atômicas
 
Threads 06: Coleções concorrentes
Threads 06: Coleções concorrentesThreads 06: Coleções concorrentes
Threads 06: Coleções concorrentes
 
Escreva aplicações web assíncronas com python3 + tornado
Escreva aplicações web assíncronas com python3 + tornadoEscreva aplicações web assíncronas com python3 + tornado
Escreva aplicações web assíncronas com python3 + tornado
 
Curso de Java: Threads
Curso de Java: ThreadsCurso de Java: Threads
Curso de Java: Threads
 
Palestra2009
Palestra2009Palestra2009
Palestra2009
 
Threads 07: Sincronizadores
Threads 07: SincronizadoresThreads 07: Sincronizadores
Threads 07: Sincronizadores
 
Objective-C
Objective-CObjective-C
Objective-C
 

Andere mochten auch

Dynamic graphical user interface generation for web-based public display appl...
Dynamic graphical user interface generation for web-based public display appl...Dynamic graphical user interface generation for web-based public display appl...
Dynamic graphical user interface generation for web-based public display appl...Jorge Cardoso
 
Computer Vision For Computer Music
Computer Vision For Computer MusicComputer Vision For Computer Music
Computer Vision For Computer MusicJorge Cardoso
 
Assessing Feedback for Indirect Shared Interaction
Assessing Feedback for Indirect Shared InteractionAssessing Feedback for Indirect Shared Interaction
Assessing Feedback for Indirect Shared InteractionJorge Cardoso
 
Evaluation of a programming toolkit for interactive public display applications
Evaluation of a programming toolkit for interactive public display applicationsEvaluation of a programming toolkit for interactive public display applications
Evaluation of a programming toolkit for interactive public display applicationsJorge Cardoso
 
Service Oriented Enterprise Architecture and Service Oriented Enterprise
Service Oriented Enterprise Architecture and Service Oriented EnterpriseService Oriented Enterprise Architecture and Service Oriented Enterprise
Service Oriented Enterprise Architecture and Service Oriented EnterpriseYan Zhao
 
A framework for context-aware adaptation in public displays
A framework for context-aware adaptation in public displaysA framework for context-aware adaptation in public displays
A framework for context-aware adaptation in public displaysJorge Cardoso
 
Implementation
ImplementationImplementation
Implementationhcicourse
 

Andere mochten auch (7)

Dynamic graphical user interface generation for web-based public display appl...
Dynamic graphical user interface generation for web-based public display appl...Dynamic graphical user interface generation for web-based public display appl...
Dynamic graphical user interface generation for web-based public display appl...
 
Computer Vision For Computer Music
Computer Vision For Computer MusicComputer Vision For Computer Music
Computer Vision For Computer Music
 
Assessing Feedback for Indirect Shared Interaction
Assessing Feedback for Indirect Shared InteractionAssessing Feedback for Indirect Shared Interaction
Assessing Feedback for Indirect Shared Interaction
 
Evaluation of a programming toolkit for interactive public display applications
Evaluation of a programming toolkit for interactive public display applicationsEvaluation of a programming toolkit for interactive public display applications
Evaluation of a programming toolkit for interactive public display applications
 
Service Oriented Enterprise Architecture and Service Oriented Enterprise
Service Oriented Enterprise Architecture and Service Oriented EnterpriseService Oriented Enterprise Architecture and Service Oriented Enterprise
Service Oriented Enterprise Architecture and Service Oriented Enterprise
 
A framework for context-aware adaptation in public displays
A framework for context-aware adaptation in public displaysA framework for context-aware adaptation in public displays
A framework for context-aware adaptation in public displays
 
Implementation
ImplementationImplementation
Implementation
 

Ähnlich wie OOP ObjC

Melhorando a Experiência do Usuário com JavaScript e jQuery
Melhorando a Experiência do Usuário com JavaScript e jQueryMelhorando a Experiência do Usuário com JavaScript e jQuery
Melhorando a Experiência do Usuário com JavaScript e jQueryHarlley Oliveira
 
BDD com Easyb
BDD com EasybBDD com Easyb
BDD com EasybIsmael
 
Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Rafael Benevides
 
TDC2013 Otimizando-C
TDC2013 Otimizando-CTDC2013 Otimizando-C
TDC2013 Otimizando-Cosmarcf
 
Java Web 3 - Servlets e JSP 1
Java Web 3 - Servlets e JSP 1Java Web 3 - Servlets e JSP 1
Java Web 3 - Servlets e JSP 1Eduardo Mendes
 
Como ser programador durante o dia e mesmo assim dormir bem à noite
Como ser programador durante o dia e mesmo assim dormir bem à noiteComo ser programador durante o dia e mesmo assim dormir bem à noite
Como ser programador durante o dia e mesmo assim dormir bem à noiteComunidade NetPonto
 
Fazendo Injeção de dependência com Unity 1.2
Fazendo Injeção de dependência com Unity 1.2Fazendo Injeção de dependência com Unity 1.2
Fazendo Injeção de dependência com Unity 1.2Giovanni Bassi
 
introdução a visão compuutacional com opencv e python
introdução a visão compuutacional com opencv e pythonintrodução a visão compuutacional com opencv e python
introdução a visão compuutacional com opencv e pythonwhanderley freitas
 
Spring + Tapestry Um novo paradigma de desenvolvimento web
Spring + Tapestry Um novo paradigma de desenvolvimento webSpring + Tapestry Um novo paradigma de desenvolvimento web
Spring + Tapestry Um novo paradigma de desenvolvimento webelliando dias
 
O que você precisa para iniciar no iOS e Objective-C -
O que você precisa para iniciar no iOS e Objective-C - O que você precisa para iniciar no iOS e Objective-C -
O que você precisa para iniciar no iOS e Objective-C - Fábio Pimentel
 
Swift, a nova linguagem de programação da Apple (CocoaHeads Sao Paulo)
Swift, a nova linguagem de programação da Apple (CocoaHeads Sao Paulo)Swift, a nova linguagem de programação da Apple (CocoaHeads Sao Paulo)
Swift, a nova linguagem de programação da Apple (CocoaHeads Sao Paulo)Juliana Chahoud
 
Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)Willian Magalhães
 

Ähnlich wie OOP ObjC (20)

Threads e Estruturas de dados
Threads e Estruturas de dadosThreads e Estruturas de dados
Threads e Estruturas de dados
 
OOP Java
OOP JavaOOP Java
OOP Java
 
Melhorando a Experiência do Usuário com JavaScript e jQuery
Melhorando a Experiência do Usuário com JavaScript e jQueryMelhorando a Experiência do Usuário com JavaScript e jQuery
Melhorando a Experiência do Usuário com JavaScript e jQuery
 
Desenvolvendo para iOS
Desenvolvendo para iOSDesenvolvendo para iOS
Desenvolvendo para iOS
 
Realtime com node.js e socket.io
Realtime com node.js e socket.ioRealtime com node.js e socket.io
Realtime com node.js e socket.io
 
BDD com Easyb
BDD com EasybBDD com Easyb
BDD com Easyb
 
Aula2
Aula2Aula2
Aula2
 
Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007
 
TDC2013 Otimizando-C
TDC2013 Otimizando-CTDC2013 Otimizando-C
TDC2013 Otimizando-C
 
Minicurso groovy grails
Minicurso groovy grailsMinicurso groovy grails
Minicurso groovy grails
 
Java Web 3 - Servlets e JSP 1
Java Web 3 - Servlets e JSP 1Java Web 3 - Servlets e JSP 1
Java Web 3 - Servlets e JSP 1
 
Como ser programador durante o dia e mesmo assim dormir bem à noite
Como ser programador durante o dia e mesmo assim dormir bem à noiteComo ser programador durante o dia e mesmo assim dormir bem à noite
Como ser programador durante o dia e mesmo assim dormir bem à noite
 
Fazendo Injeção de dependência com Unity 1.2
Fazendo Injeção de dependência com Unity 1.2Fazendo Injeção de dependência com Unity 1.2
Fazendo Injeção de dependência com Unity 1.2
 
introdução a visão compuutacional com opencv e python
introdução a visão compuutacional com opencv e pythonintrodução a visão compuutacional com opencv e python
introdução a visão compuutacional com opencv e python
 
Spring + Tapestry Um novo paradigma de desenvolvimento web
Spring + Tapestry Um novo paradigma de desenvolvimento webSpring + Tapestry Um novo paradigma de desenvolvimento web
Spring + Tapestry Um novo paradigma de desenvolvimento web
 
O que você precisa para iniciar no iOS e Objective-C -
O que você precisa para iniciar no iOS e Objective-C - O que você precisa para iniciar no iOS e Objective-C -
O que você precisa para iniciar no iOS e Objective-C -
 
Swift, a nova linguagem de programação da Apple (CocoaHeads Sao Paulo)
Swift, a nova linguagem de programação da Apple (CocoaHeads Sao Paulo)Swift, a nova linguagem de programação da Apple (CocoaHeads Sao Paulo)
Swift, a nova linguagem de programação da Apple (CocoaHeads Sao Paulo)
 
Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)
 
Mock Objects
Mock ObjectsMock Objects
Mock Objects
 
servlet-requisicoes
servlet-requisicoesservlet-requisicoes
servlet-requisicoes
 

Mehr von Jorge Cardoso

Criação de Ambientes de Realidade Virtual usando A-Frame - CubeCraft Toys -...
Criação de Ambientes  de Realidade Virtual  usando A-Frame - CubeCraft Toys -...Criação de Ambientes  de Realidade Virtual  usando A-Frame - CubeCraft Toys -...
Criação de Ambientes de Realidade Virtual usando A-Frame - CubeCraft Toys -...Jorge Cardoso
 
Criação de Ambientes de Realidade Virtual usando A-Frame
Criação de Ambientes  de Realidade Virtual  usando A-FrameCriação de Ambientes  de Realidade Virtual  usando A-Frame
Criação de Ambientes de Realidade Virtual usando A-FrameJorge Cardoso
 
Journal of Science and Technology of the Arts
Journal of Science and Technology of the ArtsJournal of Science and Technology of the Arts
Journal of Science and Technology of the ArtsJorge Cardoso
 
Evaluation of Multi-Platform Mobile AR Frameworks for Roman Mosaic Augmentation
Evaluation of Multi-Platform Mobile AR Frameworks for Roman Mosaic AugmentationEvaluation of Multi-Platform Mobile AR Frameworks for Roman Mosaic Augmentation
Evaluation of Multi-Platform Mobile AR Frameworks for Roman Mosaic AugmentationJorge Cardoso
 
ConímbrigAR A Prototype Augmented Mobile Application for Exploration of Roman...
ConímbrigAR A Prototype Augmented Mobile Application for Exploration of Roman...ConímbrigAR A Prototype Augmented Mobile Application for Exploration of Roman...
ConímbrigAR A Prototype Augmented Mobile Application for Exploration of Roman...Jorge Cardoso
 
Digital tools for exploring roman mosaic
Digital tools for exploring roman mosaicDigital tools for exploring roman mosaic
Digital tools for exploring roman mosaicJorge Cardoso
 
Interaction techniques for locomotion in virtual reality
Interaction techniques for locomotion in virtual realityInteraction techniques for locomotion in virtual reality
Interaction techniques for locomotion in virtual realityJorge Cardoso
 
Interacção em ambientes de realidade virtual
Interacção em ambientes de realidade virtualInteracção em ambientes de realidade virtual
Interacção em ambientes de realidade virtualJorge Cardoso
 
PhD defense presentation
PhD defense presentationPhD defense presentation
PhD defense presentationJorge Cardoso
 
Interaction modalities, technologies and tools for interactive art
Interaction modalities, technologies and tools for interactive artInteraction modalities, technologies and tools for interactive art
Interaction modalities, technologies and tools for interactive artJorge Cardoso
 
PuReWidgets presentation at EICS 2012
PuReWidgets presentation at EICS 2012PuReWidgets presentation at EICS 2012
PuReWidgets presentation at EICS 2012Jorge Cardoso
 
PuReWidgets toolkit
PuReWidgets toolkit PuReWidgets toolkit
PuReWidgets toolkit Jorge Cardoso
 
Conceitos fundamentais de_programacao
Conceitos fundamentais de_programacao Conceitos fundamentais de_programacao
Conceitos fundamentais de_programacao Jorge Cardoso
 
Computer vision techniques for interactive art
Computer vision techniques for interactive artComputer vision techniques for interactive art
Computer vision techniques for interactive artJorge Cardoso
 
Introdução à Programacao em Processing
Introdução à Programacao em Processing Introdução à Programacao em Processing
Introdução à Programacao em Processing Jorge Cardoso
 
Introdução à Programação para iPhone (iOS)
Introdução à Programação para iPhone (iOS)Introdução à Programação para iPhone (iOS)
Introdução à Programação para iPhone (iOS)Jorge Cardoso
 
Introdução à programação para Android
Introdução à programação para AndroidIntrodução à programação para Android
Introdução à programação para AndroidJorge Cardoso
 
Conceitos Fundamentais de Programacao
Conceitos Fundamentais de ProgramacaoConceitos Fundamentais de Programacao
Conceitos Fundamentais de ProgramacaoJorge Cardoso
 

Mehr von Jorge Cardoso (20)

Criação de Ambientes de Realidade Virtual usando A-Frame - CubeCraft Toys -...
Criação de Ambientes  de Realidade Virtual  usando A-Frame - CubeCraft Toys -...Criação de Ambientes  de Realidade Virtual  usando A-Frame - CubeCraft Toys -...
Criação de Ambientes de Realidade Virtual usando A-Frame - CubeCraft Toys -...
 
Criação de Ambientes de Realidade Virtual usando A-Frame
Criação de Ambientes  de Realidade Virtual  usando A-FrameCriação de Ambientes  de Realidade Virtual  usando A-Frame
Criação de Ambientes de Realidade Virtual usando A-Frame
 
Journal of Science and Technology of the Arts
Journal of Science and Technology of the ArtsJournal of Science and Technology of the Arts
Journal of Science and Technology of the Arts
 
Evaluation of Multi-Platform Mobile AR Frameworks for Roman Mosaic Augmentation
Evaluation of Multi-Platform Mobile AR Frameworks for Roman Mosaic AugmentationEvaluation of Multi-Platform Mobile AR Frameworks for Roman Mosaic Augmentation
Evaluation of Multi-Platform Mobile AR Frameworks for Roman Mosaic Augmentation
 
ConímbrigAR A Prototype Augmented Mobile Application for Exploration of Roman...
ConímbrigAR A Prototype Augmented Mobile Application for Exploration of Roman...ConímbrigAR A Prototype Augmented Mobile Application for Exploration of Roman...
ConímbrigAR A Prototype Augmented Mobile Application for Exploration of Roman...
 
Digital tools for exploring roman mosaic
Digital tools for exploring roman mosaicDigital tools for exploring roman mosaic
Digital tools for exploring roman mosaic
 
Interaction techniques for locomotion in virtual reality
Interaction techniques for locomotion in virtual realityInteraction techniques for locomotion in virtual reality
Interaction techniques for locomotion in virtual reality
 
Interacção em ambientes de realidade virtual
Interacção em ambientes de realidade virtualInteracção em ambientes de realidade virtual
Interacção em ambientes de realidade virtual
 
PhD defense presentation
PhD defense presentationPhD defense presentation
PhD defense presentation
 
Interaction modalities, technologies and tools for interactive art
Interaction modalities, technologies and tools for interactive artInteraction modalities, technologies and tools for interactive art
Interaction modalities, technologies and tools for interactive art
 
PuReWidgets toolkit
PuReWidgets toolkitPuReWidgets toolkit
PuReWidgets toolkit
 
PuReWidgets presentation at EICS 2012
PuReWidgets presentation at EICS 2012PuReWidgets presentation at EICS 2012
PuReWidgets presentation at EICS 2012
 
PuReWidgets toolkit
PuReWidgets toolkit PuReWidgets toolkit
PuReWidgets toolkit
 
Oop java
Oop javaOop java
Oop java
 
Conceitos fundamentais de_programacao
Conceitos fundamentais de_programacao Conceitos fundamentais de_programacao
Conceitos fundamentais de_programacao
 
Computer vision techniques for interactive art
Computer vision techniques for interactive artComputer vision techniques for interactive art
Computer vision techniques for interactive art
 
Introdução à Programacao em Processing
Introdução à Programacao em Processing Introdução à Programacao em Processing
Introdução à Programacao em Processing
 
Introdução à Programação para iPhone (iOS)
Introdução à Programação para iPhone (iOS)Introdução à Programação para iPhone (iOS)
Introdução à Programação para iPhone (iOS)
 
Introdução à programação para Android
Introdução à programação para AndroidIntrodução à programação para Android
Introdução à programação para Android
 
Conceitos Fundamentais de Programacao
Conceitos Fundamentais de ProgramacaoConceitos Fundamentais de Programacao
Conceitos Fundamentais de Programacao
 

Kürzlich hochgeladen

ARTE BARROCA E ROCOCO BRASILEIRO-min.pdf
ARTE BARROCA E ROCOCO BRASILEIRO-min.pdfARTE BARROCA E ROCOCO BRASILEIRO-min.pdf
ARTE BARROCA E ROCOCO BRASILEIRO-min.pdfItaloAtsoc
 
Como fazer um Feedback Eficaz - Comitê de Gestores
Como fazer um Feedback Eficaz - Comitê de GestoresComo fazer um Feedback Eficaz - Comitê de Gestores
Como fazer um Feedback Eficaz - Comitê de GestoresEu Prefiro o Paraíso.
 
Trabalho DAC História 25 de Abril de 1974
Trabalho DAC História 25 de Abril de 1974Trabalho DAC História 25 de Abril de 1974
Trabalho DAC História 25 de Abril de 1974AnaRitaFreitas7
 
Ressonancia_magnetica_basica_slide_da_net.pptx
Ressonancia_magnetica_basica_slide_da_net.pptxRessonancia_magnetica_basica_slide_da_net.pptx
Ressonancia_magnetica_basica_slide_da_net.pptxPatriciaFarias81
 
Slides Lição 1, CPAD, O Início da Caminhada, 2Tr24, Pr Henrique.pptx
Slides Lição 1, CPAD, O Início da Caminhada, 2Tr24, Pr Henrique.pptxSlides Lição 1, CPAD, O Início da Caminhada, 2Tr24, Pr Henrique.pptx
Slides Lição 1, CPAD, O Início da Caminhada, 2Tr24, Pr Henrique.pptxLuizHenriquedeAlmeid6
 
Termo de audiência de Mauro Cid na ìntegra
Termo de audiência de Mauro Cid na ìntegraTermo de audiência de Mauro Cid na ìntegra
Termo de audiência de Mauro Cid na ìntegrafernando846621
 
Poder do convencimento,........... .
Poder do convencimento,...........         .Poder do convencimento,...........         .
Poder do convencimento,........... .WAGNERJESUSDACUNHA
 
Atividade de matemática para simulado de 2024
Atividade de matemática para simulado de 2024Atividade de matemática para simulado de 2024
Atividade de matemática para simulado de 2024gilmaraoliveira0612
 
Aula 6 - O Imperialismo e seu discurso civilizatório.pptx
Aula 6 - O Imperialismo e seu discurso civilizatório.pptxAula 6 - O Imperialismo e seu discurso civilizatório.pptx
Aula 6 - O Imperialismo e seu discurso civilizatório.pptxMarceloDosSantosSoar3
 
SEMIOSES DO OLHAR - SLIDE PARA ESTUDO 123
SEMIOSES DO OLHAR - SLIDE PARA ESTUDO 123SEMIOSES DO OLHAR - SLIDE PARA ESTUDO 123
SEMIOSES DO OLHAR - SLIDE PARA ESTUDO 123JaineCarolaineLima
 
Poema sobre o mosquito Aedes aegipyti -
Poema sobre o mosquito Aedes aegipyti  -Poema sobre o mosquito Aedes aegipyti  -
Poema sobre o mosquito Aedes aegipyti -Mary Alvarenga
 
Cruzadinha da dengue - Mosquito Aedes aegypti
Cruzadinha da dengue - Mosquito Aedes aegyptiCruzadinha da dengue - Mosquito Aedes aegypti
Cruzadinha da dengue - Mosquito Aedes aegyptiMary Alvarenga
 
Depende De Nós! José Ernesto Ferraresso.ppsx
Depende De Nós! José Ernesto Ferraresso.ppsxDepende De Nós! José Ernesto Ferraresso.ppsx
Depende De Nós! José Ernesto Ferraresso.ppsxLuzia Gabriele
 
Apresentação sobrea dengue educação.pptx
Apresentação sobrea dengue educação.pptxApresentação sobrea dengue educação.pptx
Apresentação sobrea dengue educação.pptxtaloAugusto8
 
arte retrato de um povo - Expressão Cultural e Identidade Nacional
arte retrato de um povo - Expressão Cultural e Identidade Nacionalarte retrato de um povo - Expressão Cultural e Identidade Nacional
arte retrato de um povo - Expressão Cultural e Identidade Nacionalidicacia
 
Caça palavras - BULLYING
Caça palavras  -  BULLYING  Caça palavras  -  BULLYING
Caça palavras - BULLYING Mary Alvarenga
 

Kürzlich hochgeladen (20)

ARTE BARROCA E ROCOCO BRASILEIRO-min.pdf
ARTE BARROCA E ROCOCO BRASILEIRO-min.pdfARTE BARROCA E ROCOCO BRASILEIRO-min.pdf
ARTE BARROCA E ROCOCO BRASILEIRO-min.pdf
 
Como fazer um Feedback Eficaz - Comitê de Gestores
Como fazer um Feedback Eficaz - Comitê de GestoresComo fazer um Feedback Eficaz - Comitê de Gestores
Como fazer um Feedback Eficaz - Comitê de Gestores
 
Trabalho DAC História 25 de Abril de 1974
Trabalho DAC História 25 de Abril de 1974Trabalho DAC História 25 de Abril de 1974
Trabalho DAC História 25 de Abril de 1974
 
Ressonancia_magnetica_basica_slide_da_net.pptx
Ressonancia_magnetica_basica_slide_da_net.pptxRessonancia_magnetica_basica_slide_da_net.pptx
Ressonancia_magnetica_basica_slide_da_net.pptx
 
Slides Lição 1, CPAD, O Início da Caminhada, 2Tr24, Pr Henrique.pptx
Slides Lição 1, CPAD, O Início da Caminhada, 2Tr24, Pr Henrique.pptxSlides Lição 1, CPAD, O Início da Caminhada, 2Tr24, Pr Henrique.pptx
Slides Lição 1, CPAD, O Início da Caminhada, 2Tr24, Pr Henrique.pptx
 
Abordagens 4 (Problematização) e 5 (Síntese pessoal) do texto de Severino (20...
Abordagens 4 (Problematização) e 5 (Síntese pessoal) do texto de Severino (20...Abordagens 4 (Problematização) e 5 (Síntese pessoal) do texto de Severino (20...
Abordagens 4 (Problematização) e 5 (Síntese pessoal) do texto de Severino (20...
 
Termo de audiência de Mauro Cid na ìntegra
Termo de audiência de Mauro Cid na ìntegraTermo de audiência de Mauro Cid na ìntegra
Termo de audiência de Mauro Cid na ìntegra
 
Poder do convencimento,........... .
Poder do convencimento,...........         .Poder do convencimento,...........         .
Poder do convencimento,........... .
 
Abordagem 1. Análise textual (Severino, 2013).pdf
Abordagem 1. Análise textual (Severino, 2013).pdfAbordagem 1. Análise textual (Severino, 2013).pdf
Abordagem 1. Análise textual (Severino, 2013).pdf
 
(42-ESTUDO - LUCAS) DISCIPULO DE JESUS
(42-ESTUDO - LUCAS)  DISCIPULO  DE JESUS(42-ESTUDO - LUCAS)  DISCIPULO  DE JESUS
(42-ESTUDO - LUCAS) DISCIPULO DE JESUS
 
Atividade de matemática para simulado de 2024
Atividade de matemática para simulado de 2024Atividade de matemática para simulado de 2024
Atividade de matemática para simulado de 2024
 
Aula 6 - O Imperialismo e seu discurso civilizatório.pptx
Aula 6 - O Imperialismo e seu discurso civilizatório.pptxAula 6 - O Imperialismo e seu discurso civilizatório.pptx
Aula 6 - O Imperialismo e seu discurso civilizatório.pptx
 
SEMIOSES DO OLHAR - SLIDE PARA ESTUDO 123
SEMIOSES DO OLHAR - SLIDE PARA ESTUDO 123SEMIOSES DO OLHAR - SLIDE PARA ESTUDO 123
SEMIOSES DO OLHAR - SLIDE PARA ESTUDO 123
 
Poema sobre o mosquito Aedes aegipyti -
Poema sobre o mosquito Aedes aegipyti  -Poema sobre o mosquito Aedes aegipyti  -
Poema sobre o mosquito Aedes aegipyti -
 
Cruzadinha da dengue - Mosquito Aedes aegypti
Cruzadinha da dengue - Mosquito Aedes aegyptiCruzadinha da dengue - Mosquito Aedes aegypti
Cruzadinha da dengue - Mosquito Aedes aegypti
 
Depende De Nós! José Ernesto Ferraresso.ppsx
Depende De Nós! José Ernesto Ferraresso.ppsxDepende De Nós! José Ernesto Ferraresso.ppsx
Depende De Nós! José Ernesto Ferraresso.ppsx
 
Apresentação sobrea dengue educação.pptx
Apresentação sobrea dengue educação.pptxApresentação sobrea dengue educação.pptx
Apresentação sobrea dengue educação.pptx
 
arte retrato de um povo - Expressão Cultural e Identidade Nacional
arte retrato de um povo - Expressão Cultural e Identidade Nacionalarte retrato de um povo - Expressão Cultural e Identidade Nacional
arte retrato de um povo - Expressão Cultural e Identidade Nacional
 
Caça palavras - BULLYING
Caça palavras  -  BULLYING  Caça palavras  -  BULLYING
Caça palavras - BULLYING
 
Abordagem 2. Análise temática (Severino, 2013)_PdfToPowerPoint.pdf
Abordagem 2. Análise temática (Severino, 2013)_PdfToPowerPoint.pdfAbordagem 2. Análise temática (Severino, 2013)_PdfToPowerPoint.pdf
Abordagem 2. Análise temática (Severino, 2013)_PdfToPowerPoint.pdf
 

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 &quot;obriga&quot; 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 &quot;Veiculo.h&quot; @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 &quot;Veiculo.h&quot; @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 &quot;Veiculo.h&quot;  @implementation Veiculo  - (id)init {       // allow superclass to initialize its state first       if (self = [super init]) {          marca = @&quot;não definida&quot;; //this is a NSString          velMax = 120;          velActual = 0;          numRodas = 4;          numLugares = 4;      }       return self; } //other method implementations...   @end
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.