17
AULA 2 Orientação a Objetos utilizando a linguagem Java Ministrado por Endel Guimarães Silva, Pedro Ferraz, Wagner Takeshi Obara e Yuri Pádua

Java aula 2

Embed Size (px)

Citation preview

Page 1: Java aula 2

AULA 2

Orientação a Objetos utilizando a linguagem Java

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

Page 2: Java aula 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

Page 3: Java aula 2

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.

Page 4: Java aula 2

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.

Page 5: Java aula 2

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.

Page 6: Java aula 2

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.

Page 7: Java aula 2

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.

Page 8: Java aula 2

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

Page 9: Java aula 2

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.

Page 10: Java aula 2

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!

Page 11: Java aula 2

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.

Page 12: Java aula 2

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]){

…}

Page 13: Java aula 2

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 metroMetro m = new Metro(10);

// posso inicializar sem parametro nenhumCasa c = new Casa();

Page 14: Java aula 2

Mais um pouco de sintaxe

A estrutura de uma classe é normalmente assim:package meuPacote;public class MinhaClasse{

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

// construtorpublic MinhaClasse(){

…}// outros metodospublic int meuMetodo1(String arg1, int arg2…){

…}

}

Page 15: Java aula 2

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.

Page 16: Java aula 2

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.

Page 17: Java aula 2

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.