2 september 2007
voor deeltijdstudenten Kop van Zuid Rotterdam, 3 juni 2007
Even voorstellen Naam: Wessel Oele(31) Docent bij opleiding technische informatica Kamer: I210 (tweede verdieping, links de gang in) Email: W.Oele@hro.nl Website: http://med.hro.nl/oelew
Voorkennis werken met variabelen methodes arrays strings if/else en switch constructies loops public, private en protected
Onderwerpen infprog03dt infprog03dt: objectoriëntatie: pointers classes en objecten interfaces class deriving method overriding abstract classes interfaces polymorphisme
formaliteiten Modulecode: infprog03dt Beheerder: niemand Leermiddelen: boek: Schaum s outlines boek: Introduction to Java programming dictaat Jeroen Fokker (UU) editors zoals Emacs, Jedit, netbeans of andere hersenen en de wil deze te gebruiken houding
Toetsing Toetsing geschiedt middels één programmeeropdracht: persoonlijk maken, samenwerken toegestaan demonstreren en mondeling verdedigen in de les geen deadline, veel later/eerder verdedigen toegestaan niet inleveren per e-mail geen tentamen
Deze les korte introductie in programmeertalen en paradigma s objecten en classes structuur van een class relatie met classes instantiëren/aanmaken structuur van objectgeoriënteerde programma s constructoren
Paradigma s Programmeertalen zijn gebaseerd op een bepaalde gedachte: Imperatieve talen (Fortran, Pascal, C, C++, Java) Functionele talen (Haskell, Prolog, Gopher) Objectgeoriënteerde talen (Smalltalk, Object Pascal, C++, Java)
Imperatieve talen Uit het Latijn: imperare=bevelen Een programma bestaat uit een aantal bevelen/instructies/commando s druk iets af op het scherm lees iets van de gebruiker (invoer) reken iets uit schrijf antwoord naar het het scherm enzovoorts Voorbeelden: Fortran, C, C++, Pascal, Java, Basic, APL, C#, J#, e.v.a. Bij imperatieve programmeertalen vertel je de computer van stap tot stap wat deze moet doen.
Functionele talen Veelal gebaseerd op een bepaalde wetenschappelijke discipline Logica: Prolog Lambda calculus: Haskell Voornamelijk gebruikt in het wetenschappelijk onderzoek
Prolog We vertellen aan de computer: Een weg heeft een begin en een einde Je kunt over een weg rijden en lopen Er ligt een weg tussen: Hogeschool en Eendrachtsplein Eendrachtsplein en centraal station Centraal station en Hofplein We vragen aan de computer of je van de hogeschool naar het Hofplein kunt lopen... Antwoord van de computer: yes! Kun je lopen over het centraal station? Antwoord: no!
Objectgeoriënteerde talen Gedachte: Deel een programma op in losse modules, zgn. objecten Objecten: Functioneren zoveel mogelijk op zichzelf Nemen ieder een klein stukje van de functionaliteit voor hun rekening Vormen in combinatie met elkaar een programma Kunnen hergebruikt worden in andere programma s Voorbeelden: Smalltalk, Object Pascal, C++, Java
Java leren droge conceptuele kennis van de taal is belangrijker dan grafische bling bling geavanceerde ontwikkelomgevingen werken pas indien men het bovenstaande respecteert onderscheidt twee zaken: de regels van de taal de denkwijze van het programma (algoritme) onafhankelijk van de taal vaak uitgedrukt in wiskunde tijdloos
De class vormt een recept voor een object schrijfwijze: public class classnaam { class variabelen constructoren methodes }
Voorbeeld public class vierkant { /********VARIABLES***********/ private int zijde; /********CONSTRUCTORS********/ public vierkant() { zijde=1; } /********METHODS*************/ public void printoppervlakte() { System.out.println("oppervlakte: "+(zijde*zijde)); } }
Classes en objecten De klasse is het recept, de taart(en) het object source public class x {... } geheugen object x 1 object x 2 object x 3
Een object aanmaken Gegeven de klasse vierkant In een (methode van een) andere klasse: vierkant v = new vierkant(); vierkant w = new vierkant(); vierkant x = new vierkant(); In het algemeen: Object x = new Object();
In het geheugen v vierkant object w vierkant object x vierkant object
Voorbeeld public class application { public static void main(string[] args) { int a=5; String naam= Wessel ;... vierkant x=new vierkant();... }
In het geheugen a 5 naam Wessel x vierkant object
Een object vernietigen simpelweg de variabele die naar het object verwijst gelijk maken aan null: x vierkant object x=null; x...
De constructor is een bijzondere methode heeft dezelfde naam als de klasse geeft per definitie niets terug(void) wordt uitgevoerd zodra een object wordt aangemaakt heeft toegang tot alle variabelen in de klasse mag alle methodes van de klasse aanroepen gebruik je om bij het instantiëren: variabelen een waarde te geven dingen te controleren
Voorbeeld public class vierkant { /********VARIABLES***********/ private int zijde; /********CONSTRUCTORS********/ public vierkant() { zijde=1; }... Bij het instantiëren wordt de variabele zijde op 1 gezet.
In het geheugen vierkant x = new vierkant(); x vierkant zijde 1
Constructor overloading Een klasse: kan meerdere constructoren hebben constructoren: kunnen verschillende soorten parameters hebben kunnen verschillende aantallen parameters hebben gebruiken om af te wijken van standaard waarden Bovenstaand concept: heet overloading werkt op dezelfde wijze bij normale methodes
Voorbeeld public class vierkant { /********VARIABLES***********/ private int zijde; /********CONSTRUCTORS********/ public vierkant() { zijde=1; } public vierkant(int van_buiten) { zijde=van_buiten; }
Voorbeeld gebruik public class application { public static void main(string[] args) {... vierkant x=new vierkant();... vierkant y=new vierkant(12); }
In het geheugen vierkant x = new vierkant(); vierkant y = new vierkant(12); x y vierkant zijde 1 vierkant zijde 12
Class vs. local variabelen Class variabelen: bestaan zolang het object bestaat zijn toegankelijk voor alle constructoren zijn toegankelijk voor alle methodes Lokale variabelen: zitten in constructoren of methodes bestaan zolang de methode wordt uitgevoerd worden derhalve vernietigd zodra de methode eindigt
Vragen Mag dit?... vierkant x=new vierkant(); vierkant y=new vierkant(8); vierkant z; z=x; x=y;
Vragen Mag dit?... vierkant x=new vierkant(); vierkant y=new vierkant(8); vierkant z; z=x; x=y; Ja Geheugen?
Structuur van een klasse class declaratie public class Programma { variabelen int x; int y; constructoren public Programma(){...} methodes public void doe_iets(){...} }
Structuur van grotere programma s class a... class b... class c... class d... class e main methode