Noțiuni avansate de programare obiect-orientată: Diferență între versiuni
De la WikiLabs
Jump to navigationJump to search
Fără descriere a modificării |
|||
Linia 9: | Linia 9: | ||
Conceptul de moștenire este util atunci când programatorul are nevoie de o anumită funcționalitate care parțial este deja implementată într-o alta clasă. Astfel, acele bucăți de program nu mai trebuie reimplementate și testate ci doar completate. | Conceptul de moștenire este util atunci când programatorul are nevoie de o anumită funcționalitate care parțial este deja implementată într-o alta clasă. Astfel, acele bucăți de program nu mai trebuie reimplementate și testate ci doar completate. | ||
Putem lua ca exemplu o clasă | Putem lua ca exemplu o clasă ''Vehicle'': | ||
<syntaxhighlight lang="Java"> | |||
public class Vehicle{ | |||
public static final float MAX_VEHICLE_SPEED = 300; | |||
protected float currentSpeed; | |||
private String name; | |||
private String color; | |||
public Vehicle(String _name, String _color){ | |||
name = _name; | |||
color = _color; | |||
} | |||
public void increaseSpeedBy(int _speed){ | |||
if(currentSpeed + _speed <= MAX_VEHICLE_SPEED){ | |||
currentSpeed += _speed; | |||
} | |||
} | |||
public String getName(){ | |||
return name; | |||
} | |||
public String getColor(){ | |||
return color; | |||
} | |||
public float getCurrentSpeed(){ | |||
return currentSpeed; | |||
} | |||
} | |||
</syntaxhighlight> | |||
... și două clase extinse: ''Carriage'' | |||
<syntaxhighlight lang="Java"> | |||
public class Carriage extends Vehicle{ | |||
public static final float MAX_VEHICLE_SPEED = 40; | |||
private int horseCount; | |||
public Carriage(String _color, int _horseCount){ | |||
super("Carriage", _color); | |||
horseCount = _horseCount; | |||
} | |||
public int getHorseCount(){ | |||
return horseCount(); | |||
} | |||
} | |||
</syntaxhighlight> | |||
...și ''Automobile'': | |||
<syntaxhighlight lang="Java"> | |||
public class Automobile extends Vehicle{ | |||
public static final float MAX_VEHICLE_SPEED = 250; | |||
private int cylinders; | |||
private String make; | |||
private String model; | |||
public Autombile(String _make, String _model, String _color, int _cylinders){ | |||
super("Automobile", _color); | |||
make = _make; | |||
model = _model; | |||
cylinders = _cylinders; | |||
} | |||
public int getCylinders(){ | |||
return cylinders; | |||
} | |||
public String getMake(){ | |||
return make; | |||
} | |||
public String getModel(){ | |||
return model; | |||
} | |||
} | |||
</syntaxhighlight> | |||
=== Polimorfism === | === Polimorfism === | ||
== Încapsulare == | == Încapsulare == |
Versiunea de la data 13 august 2012 12:08
Ierarhii de clase
Una din cele mai utile facilități ale unui limbaj orientat obiect, din punct de vedere al ușurinței de a citi și menține o aplicație, este aceea de a crea o ierarhie de clase. Particularitățile unei ierarhii de clase sunt:
- o clasă poate extinde o altă clasă, moștenind din funcționalitatea acesteia din urmă;
- un obiect instanțiat dintr-o clasă B care este extinsă dintr-o clasă A, este în același timp de tip B dar și de tip A (polimorfism).
Moștenire
Conceptul de moștenire este util atunci când programatorul are nevoie de o anumită funcționalitate care parțial este deja implementată într-o alta clasă. Astfel, acele bucăți de program nu mai trebuie reimplementate și testate ci doar completate.
Putem lua ca exemplu o clasă Vehicle:
public class Vehicle{
public static final float MAX_VEHICLE_SPEED = 300;
protected float currentSpeed;
private String name;
private String color;
public Vehicle(String _name, String _color){
name = _name;
color = _color;
}
public void increaseSpeedBy(int _speed){
if(currentSpeed + _speed <= MAX_VEHICLE_SPEED){
currentSpeed += _speed;
}
}
public String getName(){
return name;
}
public String getColor(){
return color;
}
public float getCurrentSpeed(){
return currentSpeed;
}
}
... și două clase extinse: Carriage
public class Carriage extends Vehicle{
public static final float MAX_VEHICLE_SPEED = 40;
private int horseCount;
public Carriage(String _color, int _horseCount){
super("Carriage", _color);
horseCount = _horseCount;
}
public int getHorseCount(){
return horseCount();
}
}
...și Automobile:
public class Automobile extends Vehicle{
public static final float MAX_VEHICLE_SPEED = 250;
private int cylinders;
private String make;
private String model;
public Autombile(String _make, String _model, String _color, int _cylinders){
super("Automobile", _color);
make = _make;
model = _model;
cylinders = _cylinders;
}
public int getCylinders(){
return cylinders;
}
public String getMake(){
return make;
}
public String getModel(){
return model;
}
}