Если не углублятся в теорию то в объектно ориентированном программировании есть два основных типа отношений между объектами: наследование и агригация. Насле́дование —механизм позволяющий описать новый класс на основе уже существующего (родительского), при этом свойства и функциональность родительского класса заимствуются новым классом. Для твоего случая мэйнфрэймы, настольные компьютеры, ноутбуки все являются по сути компьютерами(вычислительными машинами). Т.е. мэйнфрэйм - это компьютер, ноутбук – компьютер. Следовательно для твоей задачи можно создать абстрактный класс или интерфейс Computer от которого будут наследоваться остальные классы которые представляют из себя компьютер.
По хорошему тебе надо ещё создать класс Processor, который будет хранить информацию о процессоре, класс Memory – информация о памяти. И агрегировать эти два класса в класс Computer.
Теперь немного подробнее о том, что такое агрегация. Агрегация - это зависимость между классом составных объектов и классами, представляющими компоненты этих объектов (отношение "целое"-"часть").
То есть память и процессор это чать копьютера.
Теперь когда мы разобрались с отношениями между классами, передём к следующему пункту – полиморфизм.
Полиморфи́зм — взаимозаменяемость объектов с одинаковым интерфейсом.
Язык программирования поддерживает полиморфизм, если классы с одинаковой спецификацией(т.е. которые наследуют один и тот же класс либо реализуют один и тот же интрефейс) могут иметь различную реализацию — например, реализация класса может быть изменена в процессе наследования.
Кратко смысл полиморфизма можно выразить фразой: «Один интерфейс, множество реализаций».
Теперь собственно пример. Оговорюсь сразу, пример можно усовершенствовать до тех пор, пака не достигнете интересующий уровень детализации. Для быстроты пример очень простой.
<!--shcode--><pre><code class='java'>public class Main {
public static void main(String[] args) {
Computer[] computers = new Computer[2];
computers[0] = new PC();
computers[1] = new NoteBook();
for (Computer computer : computers) {
computer.on();
}
for (Computer computer : computers) {
computer.off();
}
}
}
abstract class Computer
{
private Memory memory;
private Processor processor;
public abstract void on();
public abstract void off();
public Memory getMemory() {
return memory;
}
public void setMemory(Memory memory) {
this.memory = memory;
}
public Processor getProcessor() {
return processor;
}
public void setProcessor(Processor processor) {
this.processor = processor;
}
}
class Memory{
private String vendor;
private Long capacity;
public Memory(){
System.out.println("Memory initialized");
}
public Long getCapacity() {
return capacity;
}
public void setCapacity(Long capacity) {
this.capacity = capacity;
}
public String getVendor() {
return vendor;
}
public void setVendor(String vendor) {
this.vendor = vendor;
}
}
class Processor{
private String vendor;
private Long frequency;
public Processor(){
System.out.println("Processor initialized");
}
public Long getFrequency() {
return frequency;
}
public void setFrequency(Long frequency) {
this.frequency = frequency;
}
public String getVendor() {
return vendor;
}
public void setVendor(String vendor) {
this.vendor = vendor;
}
}
class NoteBook extends Computer{
private Integer weight;
public Integer getWeight() {
return weight;
}
public void setWeight(Integer weight) {
this.weight = weight;
}
@Override
public void off() {
setProcessor(null);
setMemory(null);
System.out.println("NoteBook off");
}
@Override
public void on() {
Processor processor = new Processor();
processor.setVendor("Intel");
processor.setFrequency(2000L);
setProcessor(processor);
Memory memory = new Memory();
memory.setVendor("Kings");
memory.setCapacity(256L);
setMemory(memory);
System.out.println("NoteBook on");
}
}
class PC extends Computer {
private String type;
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public void on(){
Memory memory = new Memory();
memory.setVendor("Kings");
memory.setCapacity(256L);
setMemory(memory);
Processor processor = new Processor();
processor.setVendor("AMD");
processor.setFrequency(3000L);
setProcessor(processor);
System.out.println("PC on");
}
public void off(){
setMemory(null);
setProcessor(null);
System.out.println("PC off");
}
}[/CODE]
Добавлено: Почитай ещё вот это, может поможет разобраться
Ссылка скрыта от гостей