Programação Orientada a Objectos (OOP) - Part 1: Java Jorge C. S. Cardoso, Luís Gustavo Martins jorgecardoso@ieee.org, lma...
Conteúdo <ul><ul><li>Objectos </li></ul></ul><ul><ul><li>Classes </li></ul></ul><ul><ul><li>Construtores </li></ul></ul><u...
Objectos no mundo real <ul><li>Objectos no mundo real podem ser descritos através de duas características essenciais:  est...
Objectos no mundo real <ul><li>Outro exemplo:  o automóvel do Jorge   </li></ul><ul><ul><li>Atributos : </li></ul></ul><ul...
Classes no mundo real <ul><li>Os dois exemplos anteriores, cão e automóvel, referiam-se a objectos concretos (o cão do Joã...
Classes em OOP <ul><ul><li>Uma  classe  é, basicamente, um  molde  para a criação de objectos.  </li></ul></ul><ul><ul><li...
Um exemplo concreto: Classe Veículo <ul><li>Atributos : </li></ul><ul><li>-  Cor </li></ul><ul><li>- Marca </li></ul><ul><...
Um exemplo concreto:  Classe Veículo <ul><li>Atributos : </li></ul><ul><li>- Cor </li></ul><ul><li>- Marca </li></ul><ul><...
OOP Concepts Encapsulation keep implementation private and separate from interface •  Polymorphism different objects, same...
Classe Veículo em Java <ul><li>public class Veiculo { // ficheiro Veiculo.java </li></ul><ul><li>int velMax = 120; // em K...
Encapsulamento <ul><ul><li>Uma das vantagens da programação orientada a objectos é a de permitir o  encapsulamento dos dad...
Encapsulamento <ul><ul><li>Estas duas propriedades facilitam o trabalho do programador que utiliza os objectos: tal como n...
Encapsulamento em Java  <ul><ul><li>A linguagem Java não força o encapsulamento na perspectiva do &quot;esconder&quot; a i...
Java: Variáveis e Métodos de Classe e de Instância <ul><ul><li>Apesar de isto não acontecer com objectos no mundo real, em...
Java: Variáveis e Métodos de Classe e de Instância <ul><li>public classe XPTO { </li></ul><ul><li>     public int var1 = 1...
Java: Variáveis e Métodos de Classe e de Instância <ul><ul><li>Para usarmos variáveis/métodos de classe usamos a notação &...
Construtores <ul><ul><li>Muitas vezes, a inicialização do objecto é complexa (pode envolver mais do que apenas inicializaç...
Construtores em Java  <ul><ul><li>Em Java, o construtor é um método com o mesmo nome da classe, mas sem tipo de retorno.  ...
Construtores em Java  <ul><li>public class Veiculo { </li></ul><ul><li>// Atributos aqui </li></ul><ul><li>     public Vei...
Destrutores <ul><ul><li>Um destrutor é o oposto de um construtor: é um método especial invocado quando o objecto é destruí...
Herança <ul><ul><li>Em muitos casos existe uma relação entre classes diferentes num programa.  </li></ul></ul><ul><ul><li>...
Herança <ul><ul><li>Nestes casos, faz mais sentido modelar  três  classes:  Automóvel  e  Bicicleta  como classes derivada...
Herança <ul><ul><li>As subclasses herdam todos os atributos e métodos da superclasse, excepto os construtores. </li></ul><...
Herança em Java <ul><li>Projecto Java-Heranca </li></ul><ul><li>public class Automovel extends Veiculo { </li></ul><ul><li...
Method Overriding <ul><ul><li>Method overriding (&quot;sobreposição de método&quot;) é uma funcionalidade das linguagens O...
Method overriding <ul><li>Method overriding permite à classe Bicicleta re-implementar um método da classe Veículo. </li></...
Method overriding em Java <ul><li>Projecto Java-Overriding </li></ul><ul><li>public class Veiculo { </li></ul><ul><li>    ...
Exercício <ul><ul><li>Reimplementar o problema das operações sobre fracções com objectos </li></ul></ul><ul><ul><li>Classe...
Exercício public class Fraction { int numerator; int denominator; public void setTo(int n, int d) { this.numerator = n; th...
Exercício public class Calculator { Fraction operand1, operand2; public Calculator(Fraction frac1, Fraction frac2) { opera...
Exercício                                   Fraction f1 = new Fraction(); Fraction f2 = new Fraction(); Fraction result; f...
Strings <ul><ul><li>strings (texto) </li></ul></ul><ul><ul><li>Para guardarmos texto num programa usamos o tipo </li></ul>...
Strings <ul><ul><li>As strings em Java são implementadas como objectos </li></ul></ul><ul><li>String nome = &quot;jorge&qu...
Referências <ul><li>http://download.oracle.com/javase/tutorial/java/concepts/ </li></ul><ul><li>http://en.wikipedia.org/wi...
Fim <ul><li>Cursos de Verão na Católica 2010 </li></ul><ul><li>http://porto.ucp.pt/cvc/ </li></ul>Jorge C. S. Cardoso, Luí...
Próximos SlideShares
Carregando em…5
×

OOP Java

2.712 visualizações

Publicada em

Slides do segundo dia do Workshop (intensivo :) ) sobre Introdução à Programação de Dispositivos Móveis (Google Android, Apple iPhone, iPod Touch e iPad)

Publicada em: Educação
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
2.712
No SlideShare
0
A partir de incorporações
0
Número de incorporações
3
Ações
Compartilhamentos
0
Downloads
102
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

OOP Java

  1. 1. Programação Orientada a Objectos (OOP) - Part 1: Java Jorge C. S. Cardoso, Luís Gustavo Martins jorgecardoso@ieee.org, lmartins@porto.ucp.pt Cursos de Verão na Católica 2010
  2. 2. Conteúdo <ul><ul><li>Objectos </li></ul></ul><ul><ul><li>Classes </li></ul></ul><ul><ul><li>Construtores </li></ul></ul><ul><ul><li>Destrutores </li></ul></ul><ul><ul><li>Encapsulamento </li></ul></ul><ul><ul><li>Herança </li></ul></ul><ul><ul><li>Method overriding </li></ul></ul><ul><ul><li>Strings </li></ul></ul>
  3. 3. Objectos no mundo real <ul><li>Objectos no mundo real podem ser descritos através de duas características essenciais: estado e comportamento . </li></ul><ul><li>  </li></ul><ul><li>Por exemplo, o cão do João tem: </li></ul><ul><li>  </li></ul><ul><ul><li>  estado (atributos): </li></ul></ul><ul><ul><ul><li>Cor:  castanho </li></ul></ul></ul><ul><ul><ul><li>Tamanho pêlo: curto </li></ul></ul></ul><ul><ul><ul><li>Raça: Rafeiro </li></ul></ul></ul><ul><ul><ul><li>Idade: 3 anos </li></ul></ul></ul><ul><ul><ul><li>Nome: Bobi </li></ul></ul></ul><ul><ul><li>comportamento </li></ul></ul><ul><ul><ul><li>corre </li></ul></ul></ul><ul><ul><ul><li>ladra </li></ul></ul></ul><ul><ul><ul><li>senta-se </li></ul></ul></ul><ul><ul><ul><li>come </li></ul></ul></ul><ul><ul><ul><li>dorme </li></ul></ul></ul>
  4. 4. Objectos no mundo real <ul><li>Outro exemplo: o automóvel do Jorge   </li></ul><ul><ul><li>Atributos : </li></ul></ul><ul><ul><ul><li>Cor: azul escuro </li></ul></ul></ul><ul><ul><ul><li>Marca: Opel </li></ul></ul></ul><ul><ul><ul><li>Modelo: Corsa </li></ul></ul></ul><ul><ul><ul><li>Velocidade: parado </li></ul></ul></ul><ul><ul><ul><li>Combustível: 30% </li></ul></ul></ul><ul><ul><li>Comportamento: </li></ul></ul><ul><ul><ul><li>arrancar </li></ul></ul></ul><ul><ul><ul><li>acelerar </li></ul></ul></ul><ul><ul><ul><li>travar </li></ul></ul></ul>(O comportamento não se refere necessariamente a comportamento autónomo, mas simplesmente a acções que o objecto pode realizar.)
  5. 5. Classes no mundo real <ul><li>Os dois exemplos anteriores, cão e automóvel, referiam-se a objectos concretos (o cão do João e o automóvel do Jorge). </li></ul><ul><li>No entanto, existem milhares de automóveis diferentes, com o mesmo comportamento e com os mesmos atributos (cor, marca, modelo, etc - embora não com os mesmos valores) </li></ul><ul><li>A este conjunto genérico de comportamentos e atributos dá-se o nome de classe. </li></ul>
  6. 6. Classes em OOP <ul><ul><li>Uma classe é, basicamente, um molde para a criação de objectos.  </li></ul></ul><ul><ul><li>Em OOP, ao processo de criar um objecto a partir de uma classe dá-se o nome de instanciação . </li></ul></ul><ul><ul><ul><li>Usando o exemplo anterior, o objecto &quot;Automóvel do Jorge&quot; seria uma instância da classe &quot;Automóvel&quot;. </li></ul></ul></ul><ul><ul><li>Os atributos são representados através de variáveis e o comportamento através de métodos . </li></ul></ul>http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2010-winter
  7. 7. Um exemplo concreto: Classe Veículo <ul><li>Atributos : </li></ul><ul><li>- Cor </li></ul><ul><li>- Marca </li></ul><ul><li>- Modelo </li></ul><ul><li>- Peso </li></ul><ul><li>- Vel. Máx. </li></ul><ul><li>- Vel. Actual </li></ul><ul><li>- Num. Rodas </li></ul><ul><li>- Num. lugares </li></ul><ul><li>- Kilómetros </li></ul><ul><li>- Litros de Combustvel </li></ul>Comportamento: - Arrancar - Travar - Acelerar - Buzinar - Encher Depósito - *Parado? - *Mostrar Estado * Em OOP não temos de nos cingir à realidade :)
  8. 8. Um exemplo concreto: Classe Veículo <ul><li>Atributos : </li></ul><ul><li>- Cor </li></ul><ul><li>- Marca </li></ul><ul><li>- Modelo </li></ul><ul><li>- Peso </li></ul><ul><li>- Vel. Máx. </li></ul><ul><li>- Vel. Actual </li></ul><ul><li>- Num. Rodas </li></ul><ul><li>- Num. lugares </li></ul><ul><li>- Kilómetros </li></ul><ul><li>- Litros de Combustível </li></ul>Comportamento: - Arrancar - Travar - Acelerar - Buzinar - Encher Depósito - *Parado? - *Mostrar Estado <ul><li>Design Phase </li></ul><ul><ul><li>Criar uma classe </li></ul></ul><ul><ul><ul><li>Veículo </li></ul></ul></ul><ul><ul><li>Determinar a &quot; superclass &quot; (classe pai) </li></ul></ul><ul><ul><ul><li>ObjC => NSObject </li></ul></ul></ul><ul><ul><ul><li>Java => Object (implicitamente) </li></ul></ul></ul><ul><ul><li>Que propriedades deve ter a classe? </li></ul></ul><ul><ul><li>Que acções deve ela implementar? </li></ul></ul>
  9. 9. OOP Concepts Encapsulation keep implementation private and separate from interface • Polymorphism different objects, same interface • Inheritance hierarchical organization, share code, customize or extend behaviors
  10. 10. Classe Veículo em Java <ul><li>public class Veiculo { // ficheiro Veiculo.java </li></ul><ul><li>int velMax = 120; // em Km/h </li></ul><ul><li>int velActual = 0; </li></ul><ul><li>int numRodas = 4; </li></ul><ul><li>int numLugares = 5; </li></ul><ul><li>public void arrancar() { </li></ul><ul><li>                 // implementação do método arrancar </li></ul><ul><li>} </li></ul><ul><li>public void travar() {//... } </li></ul><ul><li>public void acelerar() {//... } </li></ul><ul><li>public void buzinar()  {//... } </li></ul><ul><li>public boolean estaParado() {//... } </li></ul><ul><li>public void mostrarEstado() {//... } </li></ul><ul><li>} </li></ul>
  11. 11. Encapsulamento <ul><ul><li>Uma das vantagens da programação orientada a objectos é a de permitir o encapsulamento dos dados/comportamento : </li></ul></ul><ul><ul><ul><li>  Por um lado, permite agrupar numa unidade lógica dados associados a um determinado conceito e operações sobre esses dados. </li></ul></ul></ul><ul><ul><ul><li>  Por outro lado, permite &quot;esconder&quot; informação do exterior , prevenindo erros e estados inconsistentes.  </li></ul></ul></ul><ul><ul><ul><ul><li>(Dentro do possível as classes devem ser implementadas de forma a não ser possível que código externo à classe altere dados, colocando o objecto num estado de erro) </li></ul></ul></ul></ul>
  12. 12. Encapsulamento <ul><ul><li>Estas duas propriedades facilitam o trabalho do programador que utiliza os objectos: tal como no caso das funções, não é necessário compreender o funcionamento interno do objecto para tirar partido dele. </li></ul></ul><ul><ul><li>A estruturação de um programa em classes/objectos permite também ao programador definir e restringir as interdependências entre código, tornando-o mais robusto e compreensível.  </li></ul></ul><ul><ul><li>(Sem objectos teríamos programas em que o estado e comportamento de diferentes componentes estariam todos misturados). </li></ul></ul>
  13. 13. Encapsulamento em Java  <ul><ul><li>A linguagem Java não força o encapsulamento na perspectiva do &quot;esconder&quot; a informação do exterior </li></ul></ul><ul><ul><li>O programador escolhe: </li></ul></ul><ul><ul><ul><li>Os atributos podem ser declarados como vísiveis do exterior (access modifier) </li></ul></ul></ul><ul><ul><ul><ul><li>  keyword public  </li></ul></ul></ul></ul><ul><ul><ul><li>Ou podem ser declarados como visíveis apenas pela classe </li></ul></ul></ul><ul><ul><ul><ul><li>keyword private </li></ul></ul></ul></ul>
  14. 14. Java: Variáveis e Métodos de Classe e de Instância <ul><ul><li>Apesar de isto não acontecer com objectos no mundo real, em OOP é possível modelar atributos (variáveis) e comportamento (métodos) como pertencentes à classe ou à instância da classe (objecto) </li></ul></ul><ul><ul><ul><li>Variáveis e métodos de classe: podem ser usados mesmo sem criarmos um objectos dessa classe </li></ul></ul></ul><ul><ul><ul><li>Variáveis e métodos de instância: apenas podemos usá-los depois de instanciarmos o objecto (caso mais comum) </li></ul></ul></ul><ul><ul><li>Por omissão as variáveis e métodos são de instância, para os tornarmos de classe usamos o &quot;access modifier&quot; </li></ul></ul><ul><ul><ul><li>static </li></ul></ul></ul>
  15. 15. Java: Variáveis e Métodos de Classe e de Instância <ul><li>public classe XPTO { </li></ul><ul><li>     public int var1 = 1; </li></ul><ul><li>     public static int var2 = 2; </li></ul><ul><li>     public void metodo1() { </li></ul><ul><li>         System.out.println(&quot;Instancia&quot;); </li></ul><ul><li>     } </li></ul><ul><li>     public static void metodo2() { </li></ul><ul><li>         System.out.println(&quot;Static&quot;);     </li></ul><ul><li>     } </li></ul><ul><li>} </li></ul>
  16. 16. Java: Variáveis e Métodos de Classe e de Instância <ul><ul><li>Para usarmos variáveis/métodos de classe usamos a notação &quot;.&quot; directamente no nome da classe </li></ul></ul><ul><li>     XPTO.var2 = 3; </li></ul><ul><li>     XPTO.metodo2(); </li></ul><ul><li>     //XPTO.metodo1(); // Erro! </li></ul>
  17. 17. Construtores <ul><ul><li>Muitas vezes, a inicialização do objecto é complexa (pode envolver mais do que apenas inicialização de variáveis) e apenas faz sentido ser realizada pelo próprio objecto que está a ser criado (em vez de ser feita pelo código que está a criar o objecto). </li></ul></ul><ul><ul><li>Por isso, quando um objecto é criado, é invocado um método especial chamado construtor .  </li></ul></ul>
  18. 18. Construtores em Java  <ul><ul><li>Em Java, o construtor é um método com o mesmo nome da classe, mas sem tipo de retorno.  </li></ul></ul><ul><ul><li>Uma classe pode definir vários construtores com parâmetros diferentes (número e/ou tipo). </li></ul></ul><ul><ul><li>É o nome do construtor (e parâmetros) que colocamos a seguir à keyword 'new' quando criamos um objecto. </li></ul></ul>
  19. 19. Construtores em Java  <ul><li>public class Veiculo { </li></ul><ul><li>// Atributos aqui </li></ul><ul><li>     public Veiculo() { </li></ul><ul><li>     velMax = 120;  </li></ul><ul><li>     velActual = 0; </li></ul><ul><li>     numRodas = 4; </li></ul><ul><li>     numLugares = 5; </li></ul><ul><li>     } </li></ul><ul><li>     public Veiculo(int velMax, int velActual,  </li></ul><ul><li>                   int numRodas, int numLugares)  </li></ul><ul><li>     { </li></ul><ul><li>         this.velMax = velMax;  </li></ul><ul><li>this.velActual = velActual; </li></ul><ul><li>this.numRodas = numRodas; </li></ul><ul><li>this.numLugares = numLugares; </li></ul><ul><li>     } </li></ul><ul><li>} </li></ul>public static void main(String args[]) {      Veiculo v = new Veiculo();      Veiculo v1 = new Veiculo(130, 0, 3, 2);      v.mostrarEstado();      v1.mostrarEstado(); } Projecto Java-Construtor
  20. 20. Destrutores <ul><ul><li>Um destrutor é o oposto de um construtor: é um método especial invocado quando o objecto é destruído.  </li></ul></ul><ul><ul><li>O destrutor é usado para dar oportunidade ao objecto de libertar recursos (por exemplo memória). </li></ul></ul><ul><ul><li>Em Java não existem destrutores porque a gestão de memória é feita automaticamente pelo garbage collector. </li></ul></ul><ul><ul><ul><li>Existe um método que é invocado antes de o objecto ser recolhido pelo garbage colector mas raramente se usa. </li></ul></ul></ul>
  21. 21. Herança <ul><ul><li>Em muitos casos existe uma relação entre classes diferentes num programa.  </li></ul></ul><ul><ul><li>Voltando aos veículos, o nosso programa poderia necessitar de trabalhar com bicicletas e automóveis. </li></ul></ul><ul><ul><li>Apesar de ambos serem veículos, uma parte do estado e alguns comportamentos são completamente diferentes. </li></ul></ul>
  22. 22. Herança <ul><ul><li>Nestes casos, faz mais sentido modelar três classes: Automóvel e Bicicleta como classes derivadas da classe Veículo .  </li></ul></ul><ul><ul><li>Desta forma, evita-se repetir o estado e comportamento partilhados. </li></ul></ul><ul><ul><li>Nesta situação, as classes Automóvel e Bicicleta,  herdam  o estado e comportamento de Veículo, podendo  estendê-los . </li></ul></ul><ul><ul><li>A classe Veículo é a superclasse e as classes Automóvel e Bicicleta as subclasses . </li></ul></ul>
  23. 23. Herança <ul><ul><li>As subclasses herdam todos os atributos e métodos da superclasse, excepto os construtores. </li></ul></ul><ul><ul><li>O construtor da subclasse deve invocar o construtor da superclasse  </li></ul></ul><ul><ul><li>(se a superclasse tiver um construtor vazio - sem parâmetros, este é invocado automaticamente). </li></ul></ul><ul><ul><li>Para invocarmos o construtor da classe mãe usa-se a instrução  </li></ul></ul><ul><ul><ul><li>super() </li></ul></ul></ul><ul><ul><ul><li>super(param1, param2, etc); </li></ul></ul></ul>
  24. 24. Herança em Java <ul><li>Projecto Java-Heranca </li></ul><ul><li>public class Automovel extends Veiculo { </li></ul><ul><li>int numPortas; </li></ul><ul><li>public Automovel() { </li></ul><ul><li>// Não é necessário, o construtor vazio é invocado automaticamente, se não  </li></ul><ul><li>// o invocarmos nós  </li></ul><ul><li>//super(); </li></ul><ul><li>System.out.println(&quot;Automovel()&quot;); </li></ul><ul><li>} </li></ul><ul><li>public Automovel(int velMax, int velActual, int numRodas, int numLugares) { </li></ul><ul><li>super(velMax, velActual, numRodas, numLugares); </li></ul><ul><li>numPortas = 4; </li></ul><ul><li>         System.out.println(&quot;Automovel(velMax, velActual, numRodas, numLugares)&quot;); </li></ul><ul><li>} </li></ul><ul><li>public void abrirPorta()  { } </li></ul><ul><li>public void ligarMotor() { } </li></ul><ul><li>public void trocarOleo() { } </li></ul><ul><li>} </li></ul>
  25. 25. Method Overriding <ul><ul><li>Method overriding (&quot;sobreposição de método&quot;) é uma funcionalidade das linguagens OOP que permite a uma subclasse definir uma implementação mais específica de um método da superclasse. </li></ul></ul><ul><ul><ul><li>Por exemplo, a classe Veículo define um método buzinar() com uma implementação genérica para todos os tipos de veículo (&quot;horn&quot;). No entanto, faz mais sentido a uma Bicicleta proporcionar uma implementação mais específica deste método (&quot;ring ring&quot;).   </li></ul></ul></ul>
  26. 26. Method overriding <ul><li>Method overriding permite à classe Bicicleta re-implementar um método da classe Veículo. </li></ul><ul><li>A classe Automóvel, como não re-implementa o método buzinar() , usa a implementação de Veículo (&quot;horn&quot;). </li></ul>
  27. 27. Method overriding em Java <ul><li>Projecto Java-Overriding </li></ul><ul><li>public class Veiculo { </li></ul><ul><li>     // Atributos aqui </li></ul><ul><li>     // Construtores </li></ul><ul><li>     // outros métodos </li></ul><ul><li>     public void buzinar() { </li></ul><ul><li>System.out.println(&quot;Buzinar veículo: horn!&quot;); </li></ul><ul><li>     } </li></ul><ul><li>} </li></ul>public class Bicicleta extends Veiculo{      // Construtores      // Outros métodos      @Override      public void buzinar() {          System.out.println(&quot;Buzinar bicicleta: ring ring!&quot;);      } } Automovel a = new Automovel(130, 20, 4, 4); a.buzinar(); Bicicleta b = new Bicicleta(); b.buzinar();
  28. 28. Exercício <ul><ul><li>Reimplementar o problema das operações sobre fracções com objectos </li></ul></ul><ul><ul><li>Classe Fraction </li></ul></ul><ul><ul><ul><li>Atributos: ? </li></ul></ul></ul><ul><ul><ul><li>Construtores: ? </li></ul></ul></ul><ul><ul><ul><li>Métodos: 4 métodos para efectuar as 4 operações aritméticas  </li></ul></ul></ul><ul><ul><ul><ul><li>Parametro: outra Fraction </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Retorno: uma Fraction que resulta da operação da própria com o parâmetro </li></ul></ul></ul></ul><ul><ul><li>  Classe Calculator </li></ul></ul><ul><ul><ul><li>Atributos: duas Fraction, um operador (char) </li></ul></ul></ul><ul><ul><ul><li>Construtores: ? </li></ul></ul></ul><ul><ul><ul><li>Métodos: 1 método para efectuar a operação correspondente sobre as duas Fraction </li></ul></ul></ul>
  29. 29. Exercício public class Fraction { int numerator; int denominator; public void setTo(int n, int d) { this.numerator = n; this.denominator = d; } public Fraction add(Fraction f) { Fraction result = new Fraction(); int resultNum, resultDenom; resultNum = this.numerator*f.denominator + this.denominator*f.numerator; resultDenom = this.denominator * f.denominator; result.setTo(resultNum, resultDenom); result.reduce(); return result;          }
  30. 30. Exercício public class Calculator { Fraction operand1, operand2; public Calculator(Fraction frac1, Fraction frac2) { operand1 = frac1; operand2 = frac2; } public Fraction performOperation(char op) { Fraction result = new Fraction(); switch(op) { case '+': result = operand1.add(operand2); break; case '-': result = operand1.subtract(operand2); break; case '*': result = operand1.multiply(operand2); break; case '/': result = operand1.divide(operand2); break; } return result; } }
  31. 31. Exercício                                   Fraction f1 = new Fraction(); Fraction f2 = new Fraction(); Fraction result; f1.setTo(1, 4); f2.setTo(1, 4); Calculator calc = new Calculator(f1, f2); result = calc.performOperation('+'); result.print();
  32. 32. Strings <ul><ul><li>strings (texto) </li></ul></ul><ul><ul><li>Para guardarmos texto num programa usamos o tipo </li></ul></ul><ul><ul><ul><li>String </li></ul></ul></ul><ul><li>String nome = &quot;Jorge&quot;; </li></ul><ul><li>System.out.println(nome); </li></ul><ul><li>// aplicado a Strings o operador +  </li></ul><ul><li>// significa concatenação </li></ul><ul><li>nome = nome + &quot; Cardoso&quot;;  </li></ul><ul><li>System.out.println(nome); </li></ul>
  33. 33. Strings <ul><ul><li>As strings em Java são implementadas como objectos </li></ul></ul><ul><li>String nome = &quot;jorge&quot;; </li></ul><ul><ul><li>é o mesmo que  </li></ul></ul><ul><li>char data[] = {'j', 'o', 'r', 'g', 'e'}; String str = new String(data); </li></ul><ul><ul><li>Como as strings são tipos de dados muito comuns, para facilitar a sua utilização, apesar de internamente serem representadas como objectos, podemos nalguns aspectos usá-las como tipos primitivos. </li></ul></ul>
  34. 34. Referências <ul><li>http://download.oracle.com/javase/tutorial/java/concepts/ </li></ul><ul><li>http://en.wikipedia.org/wiki/Object-oriented_programming </li></ul><ul><li>http://en.wikipedia.org/wiki/Inheritance_(object-oriented_programming) </li></ul><ul><li>http://en.wikipedia.org/wiki/Method_overriding </li></ul>
  35. 35. Fim <ul><li>Cursos de Verão na Católica 2010 </li></ul><ul><li>http://porto.ucp.pt/cvc/ </li></ul>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

×