Polimorfismo, Interfaces, Classes Abstractas/Exercício 03: Carros e Motores

From Wiki**3

< Polimorfismo, Interfaces, Classes Abstractas
Revision as of 18:57, 16 October 2011 by Root (talk | contribs) (Created page with "{{TOCright}} = Problema = Modele e implemente o seguinte problema (incluindo um método “main” ilustrativo da funcionalidade). Uma fábrica constrói vários tipos de carro:...")

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Problema

Modele e implemente o seguinte problema (incluindo um método “main” ilustrativo da funcionalidade). Uma fábrica constrói vários tipos de carro: o modelo básico, que não pode ser reconfigurado, mas que é barato; o modelo de gama média, um pouco mais caro, essencialmente um modelo básico que permite trocar com um simples comando o motor original por outro (motores de confiança da aclamada gama básica); e o modelo topo de gama, que além de permitir todas as operações do modelo de gama média, permite utilizar ainda qualquer um dos possantes motores da gama Xtreme. Assim, mantendo o motor básico, permite adicionar um novo motor, utilizando ambos os motores para maior desempenho. Do ponto de vista de cada carro, o tipo e número de motores não são importantes, já que todos fazem basicamente o mesmo: ligar (quando o carro precisa de andar) e desligar (quando o carro precisa de parar). Considere que os carros apenas disponibilizam os métodos de criação, configuração de motores e andar/parar. Considere que ambas as gamas de motores fornecem a funcionalidade ligar/desligar. Pode realizar outros métodos que julgue necessitar. Evite repetições de código.

Solução

UML: Diagrama de Classes

PO-cars-engines.png

Conceito de Carro (Gama Básica)

<java5> </java5>

Conceito de Carro de Gama Média

<java5> </java5>

Selecção de Carro de Topo de Gama

<java5> </java5>

Conceito de Motor (Gama Básica)

<java5> </java5>

Conceito de Motor Topo de Gama: Motor XTreme

<java5> </java5>

Programa Principal

O programa principal é como indicado no enunciado do problema e indicado abaixo por motivos de clarificação:

<java5> /**

* Sample uses.
*/

public class Application {

} </java5>

Compiling and Running

How to Compile?

The compilation is as follows:

 javac Car.java
 javac CarMidRange.java
 javac CarHighOctane.java
 javac Motor.java
 javac XTreme.java
 javac Application.java

In fact, compiling Application.java would cause the rest of them be compiled as well (the Java compiler accounts for all explicit class dependencies).

Running

The program starts at a main function (in this case, contained in the Application class):

 java Application