Conceitos Básicos de Orientação o Objetos aplicdo ao VBA - Classes em vba
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çã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.
4. 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.
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é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
9. 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.
10. 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!
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 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…){
…
}
}
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 - 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.
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.