JAVA OOP
1. Beginwoord
2. OOP?
3. Klein Voorbeeldje
4. Uitgewerkt voorbeeld met extends
top
1. Beginwoord
OOP in Java trekt heel hard op OOP in PHP.
Ik zal hier ook ineens het werken met extends (dus het 'samenvoegen' van meerdere classes) uitleggen.
Ik raad je ook aan de OOP in PHP tutorial eerst te lezen, en weten hoe het in elkaar zit.
Die mensen kunnen ineens overschakelen naar STAP 3.
Degeen die nog nooit OOP hebben gezien, ga verder naar STAP 2.
2. OOP?
Eerst en vooral, wat is OOP.
OOP staat voor Object Orientated Programming, en alles draait rond objecten.
Allemaal mooi en wel, maar wat zijn objecten.
Een object moet je beschouwen als een soort SUPER VARIABELE, misschien zelfs een SUPER FUNCTIE.
Deze SUPER FUNCTIE kan een hele hoop informatie bevatten.
BV. een functie zelf, of meerdere functies, variabelen, input, output...
OOP wordt gebruikt om "netjes" te programeren en vooral omdat het heel gemakelijk is voor te programeren eens je je 'object' hebt aangemaakt.
Dan moet je gewoon elke keer je 'object' aanroepen en kan je de functies hierin gebruiken.
Dit klinkt misschien allemaal heel ingewikkeld, maar daarom deze tutorial ook, om het uit te leggen.
3. Klein Voorbeeldje
Ik ga dit voorbeeldje uit leggen met de allom bekende 'gegeven - gevraagd - oplossing'-techniek.
Gegeven: (wat heb ik (nodig))
Een kleine kennis van Java.
Het is echt wel vereist te weten hoe je een functie zelf in een zet, want dat ga ik hier redelijk veel gebruiken, en om dat elke keer uit te leggen...
Een Java compiler.
Een klein beetje geduld.
Goesting om dit hieronder even te lezen.
Gevraagd: (probleemstelling)
Er wordt aan mij gevraagd een programma te maken waarin ik gegevens van autos in kan opslaan.
Al deze gegevens zijn verschillend per auto.
We hebben drie types gegevens: PK (paardekracht), Kleur, aantal deuren.
Nu kan ik elke keer die gegevens gaan declareren, per nieuwe auto.
Alle gegevens voor de audi, alle gegevens voor de honda, etc.
Of ik kan alles 1x maal declareren en dit gewoon per nieuwe auto 1x aanroepen.
Dus wat doen we, we maken een soort van "functie", oftewel een CLASS aan die de declaratie bevat.
Dan ga ik elke auto als een nieuw OBJECT declareren, en de declaratie gebeurt automatisch voor de gegevens die in die CLASS zaten.
Oplossing: (het programma zelf)
import java.io.*; //Overerving van eigenschappen en methoden
class auto{ //de class auto aanmaken en dan de volgende gegevens erin steken
//eigenschappen van de auto
public int deuren; //declaratie van deuren
public int kleur; //declaratie van kleur (hexadecimaal, zodat we het als integer kunnen declareren)
public int pk; //declaratie van het aantal PK
}
class autotest{ //uitvoeren
public static void main (String[] args){//de main maken
//object audi en honda uit de klasse auto maken
auto audi = new auto();
auto honda = new auto();
//eigenschappen van audi instellen
audi.pk = 150;
audi.kleur = 000000; //hexadecimaal: ZWART
audi.deuren = 5;
//eigenschappen van honda instellen
honda.pk = 120;
honda.kleur = ffffff; //hexadecimaal: WIT
honda.deuren = 4
//weergave van de gevraagde eigenschappen
System.out.println("De audi heef " +audi.pk + " PK");
}
}
|
4. Uitgewerkt voorbeeld met extends
Nu gaan we classes met elkaar linken.
Ik ga hier bewust niet gebruik maken van 'gegeven - gevraagd - oplossing'-techniek omdat het anders veel te veel wordt.
Maar toch eerst even een probleemstelling, want die is er altijd.
Probleemstelling: (wat wil je bereiken)
We gaan weer eens terug naar die autos.
Stel we willen gegevens hebben over enkele autos, een vliegtuig, en enkele vrachtwagens.
1. Het vliegtuig is zeker geen auto, en kan niet in de class van autos.
2. Het zijn alle drie voertuigen, dus is het misschien het beste een class te maken met info over voertuigen.
3. Een vrachtwagen is ook weeral geen auto, maar heeft wel meer dingen gemeen met een auto dan met een vliegtuig.
Bv. Deuren etc.
Dus wat doen we.
We willen een class voertuigen aanmaken, laten we dat dan ineens doen:
class Voertuigen{//de class voertuigen maken
//Eigenschappen geven
protected String naam;
protected int pk;
//Methoden
//set-get-naam
public String getNaam(){
return naam; //de naam terugsturen, zorgen dat de naam wordt weergegeven bij het aanroepen
}
public void setNaam(String name){
naam = name;//een waarde aan de naam geven
}
public int getPK(){
return pk;//pk terugsturen
}
public void setPK(int k){
pk = k;//waarde aan pk geven
}
}
|
We maken de class voertuigen aan, deze gaan we nu verder opsplitsen door het gebruik van extends:
class Vierwielers extends Voertuigen{//je maakt hier de class vierwielers aan, deze bevat alle eigenschappen van de classe voertuigen, en er worden er nieuwe aan toegevoegt. Wat het woord extend eigelijk zegt: vergroten
//Eigenschappen
protected int banden;
//Constructor
public Vierwielers(){
banden = 4;
}
//Methoden
//set-get nbanden
public int getbanden(){
return banden;
}
public void setnbanden(int r){
banden = r; //waarde aan banden geven, als keuze is: invoeren
}
}
|
Nu kunnen we deze nog onderverdelen, in bv vrachtwagens:
class Vrachtwagen extends Vierwielers{//aanmaken
//Eigenschappen
protected int laadgewicht;
//Constructor
public Vrachtwagen(){
laadgewicht = 0;
}
//Methoden
public int getlaadgewicht(){
return laadgewicht;
}
public void setlaadgewicht(int la){
laadgewicht = la;//ingevoerde waarde geven
}
}
|
En niet vergeten alles weer te geven:
class Vrachtwagentest{
public static void main(String[] args){
Vrachtwagen een = new Vrachtwagen();
een.setNaam("Trucker");//waarde geven, door de functie die we in de class voertuigen hebben gemaakt
een.setPK(600);//hier weer de waarde geven, doormiddel vd functie setPK
een.setnbanden(6);//aantal banden geven, door de functie die we in de extende class van voertuigen hebben gemaakt: vierwielers
een.setlaadgewicht(15000);//en dan nog een waarde geven, die we in een extende class van vierwielers hebben gemaakt: vrachtwagen
System.out.println("Vrachtwagen: " + een.getNaam() );//en alles mooi weergeven
System.out.println("PK : " + een.getPK() );//en alles mooi weergeven
System.out.println("N banden : " + een.getbanden() );//en alles mooi weergeven
System.out.println("Laadgewich : " + een.getlaadgewicht() );//en alles mooi weergeven
}
}
|
En daar is dan je eerste JAVA OOP programma(of misschien het zo veelste al :))
Heb je nog vragen? Stel deze dan op het forum.
Thanks to Remco voor foutverbetering.
Enkele toepassingen met JAVA zijn bv. JSP, meer info daarover: JSP Tutorials
top
|