TOO – Aula 01 – 2014-07-28

Propaganda
Introdução
A orientação a objetos é uma maneira de programar que trata de modelar os processos de
programação de uma maneira próxima à linguagem humana: tratando componentes de um
programa como um objeto com suas características e funcionalidades.
No cotidiano vivemos cercados por objetos de diversos tipos e formas. O contato com esses
objetos nos leva a identificar suas características físicas, sua forma, etc. Ao visualizarmos um
objeto qualquer, como um veículo por exemplo podemos reconhecer sua forma, modelo,
cor, ou seja suas características.
Outros veículos possuirão características diferentes, o que nos leva a entender que mesmo
objetos do mesmo tipo possuirão diferentes características. Associado com as características
do objeto existe outro fator: os procedimentos (ações) que podem ser realizados ou
analisados com ele. Usando ainda o exemplo do veículo este pode estar parado ou em
movimento, pode ainda aumentar ou diminuir a velocidade (acelerar ou frear).
A programação orientada a objetos tenta simular estes aspectos, trazendo para o
computador a realidade do dia-a-dia.
Definições envolvendo classes
Em Java, tudo é definido e organizado em classes (a própria linguagem é estruturada dessa
forma). Inclusive, existem autores que defendem ser correto chamar a orientação a objeto de
orientação a classes. As classes exercem diversos papéis em programas Java, a princípio
vamos nos ater a duas abordagens:
Classes de modelagem: são as que darão origem a objetos. Ou, ainda, são as que definem
novos (e personalizados) “tipos de dados”.
Classe Principal: terá, por enquanto, a finalidade de implementar o método main (principal).
Poderia ter qualquer nome, desde que respeitadas as regras de nomenclatura de classes. Será
chamada, então, de “Principal”, como referência ao método main.
Nossa primeira classe será a representação de um automóvel segundo os critérios da
orientação a objetos. Para isso, utilizaremos um diagrama de classe (UML), um critério que
valerá para os demais exemplos dessa aula.
Definições envolvendo classes
As classes de modelagem podem ser comparadas a moldes ou formas que definem as
características e os comportamentos dos objetos criados a partir delas. Vale traçar um
paralelo com o projeto de um automóvel. Os engenheiros definem as medidas, a
quantidade de portas, a potência do motor, a localização do estepe, dentre outras
descrições necessárias para a fabricação de um veículo.
Durante a elaboração do projeto, é óbvio que o automóvel ainda não existe. Porém,
quando for fabricado, todas as especificações previamente definidas no desenho terão de
ser seguidas à risca.
Os diferentes modelos desse mesmo veículo terão detalhes diferenciais, como cor da
lataria, tipo das rodas, material do banco, acessórios etc. Nada, entretanto, que altere as
características originais, como um todo.
O funcionamento básico do automóvel também foi definido no projeto. O motorista
poderá acelerar, frear, trocar marchas, manobrar etc. Essas ações, assim como a respectiva
resposta do carro (métodos), permitem uma outra analogia com nosso assunto.
Definições envolvendo classes
O motorista (que seria no nosso caso o programador) não precisa ter conhecimentos
profundos sobre mecânica para, por exemplo, acelerar o automóvel. Internamente, o
veículo possui um complexo mecanismo que aciona as partes responsáveis pela injeção
e pela combustão.
Esta, por sua vez, gera uma pressão sobre outras engrenagens do motor, impulsionando
as rodas e fazendo o carro se deslocar – processos também especificados no projeto.
Para o motorista, quando o objetivo é velocidade, basta saber que é preciso pisar no
pedal do acelerador e que quanto mais pressão for feita mais rápido andará o veículo.
Resumindo: para uso diário do automóvel (objeto) não é preciso conhecer detalhes de
como o funcionamento dos mecanismos foi definido no projeto (classe). Basta operá-los
(chamar os métodos, obedecendo à sua assinatura). Da mesma forma, o programador
não precisa saber, em detalhes, como a classe System, por exemplo, foi desenvolvida,
mas sim saber como utilizá-la para apresentar uma informação na tela.
Atributos e Métodos
 Atributos:
As informações (dados) que definem as características e
os valores pertinentes à classe e que serão armazenados
nos (futuros) objetos são chamadas de atributos.
Também são conhecidos como variáveis de instância.
Para não confundir com variáveis comuns, vamos
chamá-los sempre de atributos.
 Métodos:
Métodos são blocos de código que pertencem a uma
classe e têm por finalidade realizar tarefas. Geralmente,
correspondem a uma ação do objeto. Considerando-se o
exemplo do automóvel, os métodos poderiam definir
processos como ligar, acelerar, frear etc.
 Atributos:
Modelo: Camaro.
Cor: Amarelo.
Portas: 2.
 Métodos:
Ligar()
Acelerar()
Frear()
Diagrama de classe
Na descrição das informações contidas no diagrama de classe, novos termos aparecerão.
Nesse momento, porém, o importante é perceber que o diagrama traz detalhes dos
atributos e métodos que compõem a classe. As tabelas a seguir descrevem os detalhes
contidos nos três compartimentos (nome, atributos e métodos) do diagrama de classe.
Automóvel
- modelo: String
- qtd_portas: int
- cor: String
- potencia_motor: float
- velocidade: double
+ cadastrarCarro(modelo:String, qtd_portas:int,
cor:String, portencia_motor:float):void
+ Ligar():void
+ Acelerar(valor: double): void
+ Frear(valor: double):void
+ Desligar():void
Por convenção, todo nome de classe
começa com letra maiúscula.
O sinal de menos ( - ) indica a
visibilidade do atributo. Nesse caso
privado (private). Por convenção todos
os nomes de atributos são escritos com
letras minúsculas.
Depois é especificado o tipo de dado
que será armazenado no atributo.
O sinal de mais ( + ) indica a visibilidade
do método, nesse caso público (public).
Por convenção o nome dos métodos é
escrito em letra minúscula.
Criando uma nova classe
É de nosso conhecimento que cada projeto criado com o NetBeans gera um arquivo com
a extensão .java, que na realidade representa a classe do programa.
A diferença entre um programa e uma classe é que no programa existe o método main
(public static void main String[ ] args) e as demais classes são as chamadas classes
externas, que servirão como uma espécie de “apoio” para a classe principal.
Até este momento estamos acostumados a trabalhar com uma única classe e criando
vários métodos que comunicam-se entre si.
A partir de agora criaremos diversas classes (arquivos .java) e faremos com que estas
troquem informações entre si. Um único projeto pode conter diversas classes.
A seguir temos um exemplo para melhor ilustrar o que foi dito:
Criando uma nova classe
Perceba que no projeto de nome Montadora existe uma classe de nome Montadora.java
que pertence ao pacote de nome montadora.
À direita da imagem percebe-se que o conteúdo desta possui o método principal public
static void main (String [ ] args), ou seja, o que o caracteriza como um programa JAVA e
não uma classe externa ou de apoio como visto anteriormente.
Vale ressaltar que, conforme já foi dito, quando o projeto for executado SEMPRE será
lida primeira a classe que contiver o método principal.
Criando uma nova classe
Para criar uma nova classe basta seguir o procedimento mostrado nas figuras abaixo:
Criando uma nova classe
Podemos notar 2 coisas importantes:
1 – Para esta nova classe criada (carro.java), diferentemente da classe principal
(Montadora.java) não existe a necessidade de se utilizar a primeira letra em maiúscula e
as demais em minúsculas.
2 – No código mostrado no lado direito da figura podemos notar a ausência de uma
classe principal (main), já que esta é uma classe externa ou de apoio.
Podemos ainda notar que as duas classes fazem parte do mesmo pacote (montadora).
Criando uma nova classe
Agora que criamos a classe externa carro.java vamos nos basear no diagrama UML
mostrado anteriormente para criarmos os atributos e métodos da classe.
Estes são os atributos
da classe, que por
convenção são todos do
tipo private.
O método cadastrarCarro recebe da classe principal
os parâmetros necessários para cadastrar o carro e
os atribui aos parâmetros da classe. Perceba que
sempre que fizermos referência aos atributos
devemos colocar antes a palavra this, que indica que
este atributo faz parte da classe. Ao final é mostrada
uma mensagem de confirmação do cadastro.
Utilizei nomes diferentes dos parâmetros do método
em relação aos atributos, mas não teria problema se
quisesse utilizar os mesmos nomes, já que o this
diferencia-os.
O método ligar() exibe uma mensagem na tela apenas.
O método acelerar() recebe um valor da classe principal e o incrementa no valor anterior do
atributo velocidade.
O método frear() recebe um valor da classe principal e o faz o inverso do método acelerar()
Idem ao método ligar().
Criando uma nova classe
O projeto do nosso carro (características, funcionamento etc.) já está definido. Vamos
Na saída vimos que apenas os métodos que
agora “montá-lo”.
imprimem resultados na tela (System.out.println)
aparecem na saída. Caso quiséssemos mostrar o
que foi cadastrado deveríamos criar um método só
para isso.
Estes são as variáveis que serão passadas como parâmetros aos
métodos da classe carro.
Instanciação do objeto da classe carro. A partir deste momento, todos os atributos e métodos da
classe carro estão disponíveis para serem utilizados pelo objeto camaro. Note que não precisei
utilizar o import como costumamos fazer para utilizar os métodos da classe Scanner. Isto se
deve ao fato de as classes fazerem parte do mesmo projeto.
Foi invocado o método ligar() da classe carro.
Os valores das variáveis foram passados ao método
cadastrarCarro da classe carro.
Foi passado o valor de aceleração ao método acelerar da classe carro..
Foi passado o valor de freno ao método frear da classe carro..
Foi invocado o método desligar() da classe carro.
Adicionando mais um método à classe
Vamos agora criar uma classe para mostrar os dados do cadastro do carro.
Este método (classe carro) simplesmente imprime os valores que dos
atributos.
Já na classe principal perceba que permanece a instanciação do objeto
feita anteriormente.
Antes de mostrarmos o cadastro do veículo corretamente devemos
primeiramente chamar o método cadastrarCarro passando os valores.
Após basta chamar o método mostrarCadastro para que sejam
impressas as informações.
Na saída temos o resultado do programa.
That's all Folks
Download