Diferență între revizuiri ale paginii „Noțiuni avansate de programare obiect-orientată”
De la WikiLabs
Jump to navigationJump to searchLinia 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;
}
}