Orientação a Objetos
        utilizando a linguagem Java

                                     AULA 2




Ministrado por Endel Guimarães Silva, Pedro Ferraz, Wagner Takeshi Obara e Yuri Pádua
Resumo da aula


 Os tópicos cobertos por essa aula são


   Por que orientação a objetos?
   Classes, objetos e diferenças entre eles
   Métodos e atributos de uma classe
   Pensando de forma Orientada a Objetos
   Construtores
   Instâncias de uma classe
Por que Orientação a objetos?

 Necessidade

 Com o aumento da complexidade dos softwares
 desenvolvidos, foi preciso pensar em alguma forma de
 facilitar o processo de desenvolvimento e manutenção, de
 forma que a leitura e escrita do código se desse de uma
 forma mais natural.

 Além disso, era necessário ampliar as capacidades de reúso
 de peças de software pois desenvolvimento de código do
 zero (build from scratch) é muito caro.
Por que Orientação a objetos?

 Vantagens

 Com isso o código ficou mais flexível quanto a mudanças: é
 mais fácil acrescentar e modificar funcionalidades e o
 impacto dessas mudanças é bastante reduzido.

 Desvantagens

 Além disso, era necessário ampliar as capacidades de reúso
 de peças de software pois desenvolvimento de código a
 partir do zero (build from scratch) é muito caro.
Classes e objetos

 Def: uma classe é um modelo abstrato e genérico para
 objetos que compartilham o mesmo comportamento (mesmo
 conjunto de características e executam as mesmas ações)

 Ex: um aluno que está na quarta série faz as mesmas
 matérias que qualquer outro aluno da quarta série.

 Ex2: todos os operários de um mesmo setor numa linha de
 produção de uma fábrica têm as mesmas competências e
 têm as mesmas funções.

 Pode-se dizer que eles estão na mesma classe.
Classes e objetos

 Def: Um objeto ou instância é um representante particular
 de uma classe

 Ex: Joãozinho é um aluno da quarta série. Joãozinho é um
 representante da classe dos alunos da quarta série.

 Ex2: Zé e Chico são funcionários do setor de embalagem em
 uma linha de produção. Ambos são representantes da classe
 dos funcionários desse setor.
Classes e objetos

 Simplificando as definições

 Uma classe é semelhante à planta de uma casa. Não
 podemos entrar em uma planta.

 Uma instância é equivalente à casa pronta: além de termos
 várias casas diferentes, ter a casa pronta é o único jeito de
 entrar nela, abrir suas janelas, pintar suas portas, etc.
Atributos e métodos de uma classe

 Def: atributos são características de um objeto e refletem
  seu estado em um dado momento

 Ex: Nome, cor dos olhos, cor do cabelo, altura, etc. são
  características de uma pessoa

 Ex2: Altura em metros, número de andares, número de
  salas, etc. são características de um prédio
Atributos e métodos de uma classe

 Def: métodos são ações que podem ser executadas por um
  objeto e definem como ocorrerá a troca de mensagens entre
  eles.

 Ex: andar, correr, falar, etc. são ações feitas por uma pessoa

 Ex2: acender as luzes, apagar as luzes, acionar sistema de
  incêndio, etc são ações que acontecem dentro de um prédio

 Com esse segundo exemplo, é possível ver que, não
  necessariamente um objeto precisa ser capaz de agir por
  si só. Métodos também regulam como o resto do mundo
  pode interagir com esse objeto.
Pensando de forma OO

 Como dito anteriormente, isso requer uma habilidade extra
 do programador em identificar semelhanças e
 generalizações das entidades de um programa.

 Isso requer, além de um alto grau de abstração, bom senso.
 Não fuja do escopo do problema!

 Às vezes, uma entidade pode ser irrelevante ao sistema e
 não precisa fazer parte do seu programa.

 Prática é fundamental!
Exercício - Metrô

 "Você foi contratado pela CPTM para desenvolver um sistema
  controlador para o metrô de São Paulo. O seu controlador deve
  fazer os trens andarem e pararem de acordo com as estações. Ao
  parar em alguma estação, a porta deve abrir durante um período de
  tempo (nesse exemplo, controlado pelo usuário) e fechar. Em
  seguida, os trens partem para a próxima estação e é reproduzida
  uma mensagem que diz o nome dessa estação, em cada vagão."

 Encontre as classes relevantes ao sistema, bem como seus
  atributos e métodos. Não precisa se prender aos dados
  fornecidos no enunciado.
Instanciando uma Classe

 Até agora, você aprendeu a identificar classes, bem como
  seus atributos e métodos para um dado problema. E agora?

 Para fazer a casa sair do papel, utilizamos um método
  construtor

 Este método deve conter a inicialização dos atributos, para
  ‘construir’ o objeto

Sintaxe:
public <NomeDaClasse>([arg1,…,argn]){
  …
}
Instanciando uma Classe

 Quando precisamos criar uma instância dessa classe,
  escrevemos
<NomeDaClasse> meuObj = new <NomeDaClasse>([args…]);


Por ex:
// 10 poderia ser o numero de vagoes do metro
Metro m = new Metro(10);

// posso inicializar sem parametro nenhum
Casa c = new Casa();
Mais um pouco de sintaxe

 A estrutura de uma classe é normalmente assim:

package meuPacote;
public class MinhaClasse{

    // declaracao dos atributos
    protected String atributo1;
    protected int atributo2;
    …

    // construtor
    public MinhaClasse(){
        …
    }
    // outros metodos
    public int meuMetodo1(String arg1, int arg2…){
        …
    }
}
Exercício - Metrô

 "Você foi contratado pela CPTM para desenvolver um sistema
  controlador para o metrô de São Paulo. O seu controlador deve
  fazer os trens andarem e pararem de acordo com as estações. Ao
  parar em alguma estação, a porta deve abrir durante um período de
  tempo (nesse exemplo, controlado pelo usuário) e fechar. Em
  seguida, os trens partem para a próxima estação e é reproduzida
  uma mensagem que diz o nome dessa estação, em cada vagão."

 Com base nas classes que você encontrou anteriormente,
  crie a estrutura dessas classes em Java. Não precisa ter
  funcionalidade nenhuma, basta criar o esqueleto da classe.
 Depois, compare com a estrutura do programa fornecido em
  aula.
Exercício - Burger King

 "Você foi contratado pelo Burger King para desenvolver um sistema
  que gerencie os pedidos no balcão. O cliente escolhe um lanche,
  uma bebida e uma sobremesa. Ao final, o sistema calcula o valor do
  pedido, imprime o pedido na tela e emite uma senha numérica."

 O foco deste exercício é na implementação. Você receberá um
  programa parcialmente implementado e terá que desenvolver o
  restante das funcionalidades. Use os arquivos contidos em
  BurgerKing.zip para começar a desenvolver.
Exercício - Celular

 "Você deve fazer um programa que simule a interação entre
  celulares. Seu programa deve apenas fazer e encerrar uma
  chamada (troca de mensagens). Não é permitido que um celular
  faça ou receba mais de uma ligação ao mesmo tempo."

 O foco deste exercício é na implementação. Você receberá um
  programa parcialmente implementado e terá que desenvolver o
  restante das funcionalidades. Use os arquivos contidos em
  Celular.zip para começar a desenvolver.

Java aula 2

  • 1.
    Orientação a Objetos utilizando a linguagem Java AULA 2 Ministrado por Endel Guimarães Silva, Pedro Ferraz, Wagner Takeshi Obara e Yuri Pádua
  • 2.
    Resumo da aula Os tópicos cobertos por essa aula são  Por que orientação a objetos?  Classes, objetos e diferenças entre eles  Métodos e atributos de uma classe  Pensando de forma Orientada a Objetos  Construtores  Instâncias de uma classe
  • 3.
    Por que Orientaçãoa objetos?  Necessidade  Com o aumento da complexidade dos softwares desenvolvidos, foi preciso pensar em alguma forma de facilitar o processo de desenvolvimento e manutenção, de forma que a leitura e escrita do código se desse de uma forma mais natural.  Além disso, era necessário ampliar as capacidades de reúso de peças de software pois desenvolvimento de código do zero (build from scratch) é muito caro.
  • 4.
    Por que Orientaçãoa objetos?  Vantagens  Com isso o código ficou mais flexível quanto a mudanças: é mais fácil acrescentar e modificar funcionalidades e o impacto dessas mudanças é bastante reduzido.  Desvantagens  Além disso, era necessário ampliar as capacidades de reúso de peças de software pois desenvolvimento de código a partir do zero (build from scratch) é muito caro.
  • 5.
    Classes e objetos Def: uma classe é um modelo abstrato e genérico para objetos que compartilham o mesmo comportamento (mesmo conjunto de características e executam as mesmas ações)  Ex: um aluno que está na quarta série faz as mesmas matérias que qualquer outro aluno da quarta série.  Ex2: todos os operários de um mesmo setor numa linha de produção de uma fábrica têm as mesmas competências e têm as mesmas funções.  Pode-se dizer que eles estão na mesma classe.
  • 6.
    Classes e objetos Def: Um objeto ou instância é um representante particular de uma classe  Ex: Joãozinho é um aluno da quarta série. Joãozinho é um representante da classe dos alunos da quarta série.  Ex2: Zé e Chico são funcionários do setor de embalagem em uma linha de produção. Ambos são representantes da classe dos funcionários desse setor.
  • 7.
    Classes e objetos Simplificando as definições  Uma classe é semelhante à planta de uma casa. Não podemos entrar em uma planta.  Uma instância é equivalente à casa pronta: além de termos várias casas diferentes, ter a casa pronta é o único jeito de entrar nela, abrir suas janelas, pintar suas portas, etc.
  • 8.
    Atributos e métodosde uma classe  Def: atributos são características de um objeto e refletem seu estado em um dado momento  Ex: Nome, cor dos olhos, cor do cabelo, altura, etc. são características de uma pessoa  Ex2: Altura em metros, número de andares, número de salas, etc. são características de um prédio
  • 9.
    Atributos e métodosde uma classe  Def: métodos são ações que podem ser executadas por um objeto e definem como ocorrerá a troca de mensagens entre eles.  Ex: andar, correr, falar, etc. são ações feitas por uma pessoa  Ex2: acender as luzes, apagar as luzes, acionar sistema de incêndio, etc são ações que acontecem dentro de um prédio  Com esse segundo exemplo, é possível ver que, não necessariamente um objeto precisa ser capaz de agir por si só. Métodos também regulam como o resto do mundo pode interagir com esse objeto.
  • 10.
    Pensando de formaOO  Como dito anteriormente, isso requer uma habilidade extra do programador em identificar semelhanças e generalizações das entidades de um programa.  Isso requer, além de um alto grau de abstração, bom senso. Não fuja do escopo do problema!  Às vezes, uma entidade pode ser irrelevante ao sistema e não precisa fazer parte do seu programa.  Prática é fundamental!
  • 11.
    Exercício - Metrô "Você foi contratado pela CPTM para desenvolver um sistema controlador para o metrô de São Paulo. O seu controlador deve fazer os trens andarem e pararem de acordo com as estações. Ao parar em alguma estação, a porta deve abrir durante um período de tempo (nesse exemplo, controlado pelo usuário) e fechar. Em seguida, os trens partem para a próxima estação e é reproduzida uma mensagem que diz o nome dessa estação, em cada vagão."  Encontre as classes relevantes ao sistema, bem como seus atributos e métodos. Não precisa se prender aos dados fornecidos no enunciado.
  • 12.
    Instanciando uma Classe Até agora, você aprendeu a identificar classes, bem como seus atributos e métodos para um dado problema. E agora?  Para fazer a casa sair do papel, utilizamos um método construtor  Este método deve conter a inicialização dos atributos, para ‘construir’ o objeto Sintaxe: public <NomeDaClasse>([arg1,…,argn]){ … }
  • 13.
    Instanciando uma Classe Quando precisamos criar uma instância dessa classe, escrevemos <NomeDaClasse> meuObj = new <NomeDaClasse>([args…]); Por ex: // 10 poderia ser o numero de vagoes do metro Metro m = new Metro(10); // posso inicializar sem parametro nenhum Casa c = new Casa();
  • 14.
    Mais um poucode sintaxe  A estrutura de uma classe é normalmente assim: package meuPacote; public class MinhaClasse{ // declaracao dos atributos protected String atributo1; protected int atributo2; … // construtor public MinhaClasse(){ … } // outros metodos public int meuMetodo1(String arg1, int arg2…){ … } }
  • 15.
    Exercício - Metrô "Você foi contratado pela CPTM para desenvolver um sistema controlador para o metrô de São Paulo. O seu controlador deve fazer os trens andarem e pararem de acordo com as estações. Ao parar em alguma estação, a porta deve abrir durante um período de tempo (nesse exemplo, controlado pelo usuário) e fechar. Em seguida, os trens partem para a próxima estação e é reproduzida uma mensagem que diz o nome dessa estação, em cada vagão."  Com base nas classes que você encontrou anteriormente, crie a estrutura dessas classes em Java. Não precisa ter funcionalidade nenhuma, basta criar o esqueleto da classe.  Depois, compare com a estrutura do programa fornecido em aula.
  • 16.
    Exercício - BurgerKing  "Você foi contratado pelo Burger King para desenvolver um sistema que gerencie os pedidos no balcão. O cliente escolhe um lanche, uma bebida e uma sobremesa. Ao final, o sistema calcula o valor do pedido, imprime o pedido na tela e emite uma senha numérica."  O foco deste exercício é na implementação. Você receberá um programa parcialmente implementado e terá que desenvolver o restante das funcionalidades. Use os arquivos contidos em BurgerKing.zip para começar a desenvolver.
  • 17.
    Exercício - Celular "Você deve fazer um programa que simule a interação entre celulares. Seu programa deve apenas fazer e encerrar uma chamada (troca de mensagens). Não é permitido que um celular faça ou receba mais de uma ligação ao mesmo tempo."  O foco deste exercício é na implementação. Você receberá um programa parcialmente implementado e terá que desenvolver o restante das funcionalidades. Use os arquivos contidos em Celular.zip para começar a desenvolver.