Objectgeoriënteerd programmeren in Java 1

Vergelijkbare documenten
Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren

Vakgroep CW KAHO Sint-Lieven

Modelleren en Programmeren

Lessen Java: Reeks pag. 1

Tentamen Inleiding Programmeren in Java

Overerving & Polymorfisme

Inhoud leereenheid 2. Overerving (1) Introductie 59. Leerkern 60. Samenvatting 88. Zelftoets 90. Terugkoppeling 94

6,1. Samenvatting door een scholier 1809 woorden 28 oktober keer beoordeeld. Informatica

Java spiekbrief. Commentaar. Definitie van een methode. Types. Variabelendeclaratie. Definitie van een klasse. Namen. Definitie van een veld

Java spiekbrief. Commentaar. Definitie van een methode. Types. Variabelendeclaratie. Definitie van een klasse. Namen. Definitie van een veld

Inhoud leereenheid 4. Inleiding JavaScript. Introductie 99. Leerkern 100. Zelftoets 108. Terugkoppeling 109

Modelleren en Programmeren

Syntax van opdracht. opdracht. expressie. variabele. = expressie ; klasse naam. methode naam. property naam += object

Scala. Korte introductie. Sylvia Stuurman

Voorbeeldtentamen Inleiding programmeren (IN1608WI), Oktober 2003, , Technische Universiteit Delft, Faculteit EWI, Afdeling 2.

Zelftest Programmeren in Java

Modelleren en Programmeren

Datatypes Een datatype is de sort van van een waarde van een variabele, veel gebruikte datatypes zijn: String, int, Bool, char en double.

APPLICATIEBOUW 3E COLLEGE: OBJECT GEORIËNTEERD PROGRAMMEREN, METHODEN, PARAMETERS, SCOPE VAN VARIABELEN. Onderdeel van SmartProducts

Inhoud. Eindtoets. Introductie 2. Opgaven 3. Bijlage bij opgaven 9. Terugkoppeling 12

Programmeren in Java les 3

Java. Basissyllabus. Egon Pas

Objectgericht programmeren 1.

Tentamen Objectgeorienteerd Programmeren TI februari Afdeling ST Faculteit EWI TU Delft

Abstracte klassen & Interfaces

Datastructuren en algoritmen

Kleine cursus PHP5. Auteur: Raymond Moesker

IMP Uitwerking week 13


Modelleren en Programmeren

Tentamen Imperatief en Object-georiënteerd programmeren in Java voor CKI

public Paneel() { knop = new JButton( Klik ); knop.addactionlistener( new KnopHandler() ); tekstvak = new JTextField(10); add(knop); add(tekstvak);

Voorbeeld: Simulatie van bewegende deeltjes

HOGESCHOOL VAN AMSTERDAM Informatica Opleiding. CPP 1 van 10

Inhoud leereenheid 7c. JavaScript: Objecten en functies. Introductie 59. Leerkern 60. Samenvatting 82. Opdrachten 83. Zelftoets 89.

Omschrijf bij ieder onderdeel van de methode de betekenis ervan. Java kent twee groepen van klassen die een GUI kunnen maken: awt en swing.

Ingebouwde klassen & methodes

Noties Informatica. In java fungeren objecten als een model voor de elementen waarin een probleem kan worden opgesplitst

Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, uur

Modelleren en Programmeren

Modelleren en Programmeren

Tentamen Object Georiënteerd Programmeren TI oktober 2014, Afdeling SCT, Faculteit EWI, TU Delft

Modelleren en Programmeren

Tentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld

Kwis (3) class X { public void a() { System.out.println("x"); public static void main(string[] args) { X x = new X();

Programmeermethoden NA. Week 5: Functies (vervolg)

Tweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 2 februari 2018, uur

Visual Basic.NET. Visual Basic.NET. M. den Besten 0.3 VB. NET

TENTAMEN Programmeren 1 VOORBEELDUITWERKING

Programmeren in C# Klassen schrijven

Ontwerp van Informatiesystemen

APPLICATIEBOUW 2E COLLEGE: ONTWERPEN, GEBRUIKERSINTERFACES, VARIABELEN & EXPRESSIES. Onderdeel van SmartProducts

voegtoe: eerst methode bevat gebruiken, alleen toevoegen als bevat() false is

Hoofdstuk 1: Inleiding. Hoofdstuk 2: Klassen en objecten Datahiding: afschermen van implementatiedetails. Naar de buitenwereld toe enkel interfaces.

Informatica. Objectgeörienteerd leren programmeren. Van de theorie met BlueJ tot een spelletje met Greenfoot... Bert Van den Abbeele

Modelleren en Programmeren

import java.io.*; één klasse public class Hallo { public static void main (String[] a) ...met één functie System.out.println("Hallo!

Programmeermethoden NA. Week 5: Functies (vervolg)

Tentamen Inleiding Programmeren (IN1608WI), duur van de toets 2 uur Technische Universiteit Delft, Faculteit EWI, Afdeling 2.

VI. Klassen en objecten

Uitwerking Eerste deeltentamen Mobiel programmeren - versie 1 Vrijdag 23 december 2016, uur

In BlueJ. Doe onderstaande met muis/menu s:

TENTAMEN Programmeren 1

Een topprogrammeur in het OO programmeren is Graig Larman. Hij bedacht de volgende zin:

Deel 1: Arduino kennismaking. Wat is een microcontroller, structuur van een programma, syntax,

Objectgericht programmeren 1

Objectgeorïenteerd werken is gebaseerd op de objecten die door het systeem gemanipuleerd worden.

Programmeren in Java 3

Objectgericht ontwerpen

Python. Vraag 1: Expressies en types. Vraag 1 b: Types -Ingebouwde functies- Vraag 1 a 3/10/14

SYNTRA-WEST. Cursus OOP. Deel

Informatie over. 5VWO DT51: JavaLogo. Casper Bezemer. Toetsweek 1 13 oktober 2016

Uitwerking Tweede deeltentamen Imperatief programmeren - versie 1 Vrijdag 21 oktober 2016, uur

programmeren Mobiel Mobilofoon 1960 Apple iphone 2007 met ios Nokia Samsung S met Android Motorola Dyna-Tac 1973

Uitwerkingen Tweede deeltentamen Imperatief programmeren Vrijdag 15 oktober 2010, uur

Syntax- (compile), runtime- en logische fouten Binaire operatoren

eerste voorbeelden in Java

Som Van Twee Getallen

Programmeren (1) Examen NAAM:

Tentamen Object Georiënteerd Programmeren TI januari 2013, Afdeling SCT, Faculteit EWI, TU Delft

APPLICATIEBOUW 7E COLLEGE: DPU3, OEFENEN TOETS. Onderdeel van SmartProducts

Transcriptie:

Objectgeoriënteerd programmeren in Java 1 CPP Javaprogrammeur Bijeenkomst 3 Leereenheden 7, 8, 9

De Java API Java bevat een grote bibliotheek standaardklassen: de Java API Voorbeelden java.lang basisklassen (o.a. String) javax.swing userinterfaceklassen Java.awt userinterfaceklassen/eventhandling java.util veelgebruikte hulpklassen

De Java API Demo Te vinden op http://download.oracle.com/javase/6/docs/api/ Op studienet informatie om api lokaal te installeren

Eclipse Ook mogelijk: Shift F2: Geeft API van klasse onder cursor

Klasse Math (java.lang) Klasse met alleen klassenattributen (constanten) en klassenmethoden Interface: public static final double PI public static double sin(double a) public static double pow(double a, double b) Gebruik: double opp = Math.PI * straal * straal; double resultaat = Math.sin(45.0); double macht = Math.pow(3.0, 4.0);

Verpakkingsklassen (java.lang) Met behulp van een verpakkingsklasse kunnen we een primitief type converteren naar een referentietype Collection klassen in Java (b.v. ArrayList) vereisen objecten Voorbeelden verpakkingsklassen: Integer Double Boolean Verpakkingsklassen bevatten ook methoden voor stringconversies

Voorbeeld

Integers toevoegen en halen uit ArrayList public void test () { ArrayList<Integer> glijst = new ArrayList<Integer>(); glijst.add(new Integer(11)); glijst.add(new Integer(2)); glijst.add(new Integer(333)); } int g = glijst.get(2).intvalue();

Auto(un)boxing public void test1() { ArrayList<Integer> glijst = new ArrayList<Integer>(); glijst.add(11); glijst.add(2); glijst.add(333); Autoboxing int g = glijst.get(2); } Autounboxing

Geheugenmodel Java Hiermee kunnen we de volgende soort vragen beantwoorden Hoeveel rekeningen zijn er na Rekening r1, r2; r1 = new Rekening("Jansen", 7890); r2 = r1; Zijn r1 en r2 gelijk na Rekening r1 = new Rekening("Jansen", 7890); Rekening r2 = new Rekening("Jansen", 7890);

Variabelen Variabele heeft een (zelfgekozen) naam heeft een locatie, locatie bevat een waarde heeft een type: primitief referentie is van een soort attribuut lokale variabele in een methode formele parameter van een methode

Soorten variabelen Attribuut public class Rekening { private double saldo = 0; private int kredietlimiet = 0;... public boolean kanopnemen(double bedrag) { double ruimte = saldo + kredietlimiet; return (ruimte >= bedrag); } } Formele parameter Lokale variabele

Variabelen Zichtbaarheid: Deel van de code waar variabele gerefereerd kan worden (statisch) Levensduur: Periode gedurende uitvoer van programma waarin variabele bestaat (dynamisch)

Variabelen Soort Levensduur Zichtbaarheid (scope) Initialisatie Attribuut Klasse: permanent Object: van creatie object tot opruiming Afhankelijk van toegangsmethode Private: overal binnen klasse Standaard beginwaarde (type-afhankelijk) of bij declaratie Public: overal in programma Formele parameter Gedurende methode- of constructor-uitvoering Romp van methode of constructor Bij aanroep door toekenning van (de waarde van) actuele parameters Lokale variabele Van declaratie variabele tot einde blok waarin variabele is gedeclareerd Van declaratie variabele tot einde blok waarin variabele is gedeclareerd Bij declaratie of later in blok door toekenningsopdracht

Toestandsdiagram / geheugenmodel Waardetabel Momentopname van variabelen Bevat namen en waarden die op een bepaald moment in betreffende locaties zijn opgeslagen Geen UML naam1 naam2 naam3 waarde1 waarde2 waarde3

Toestandsdiagram int a = 5; int b = 7; boolean c = false; a b c 5 7 false

Toestandsdiagram rekening = new GiroRekening("Kees",3456) rekening GiroRekening INLEGKADO 7.50 GiroRekening naam Kees saldo 7.50 gironummer 3456 Klassen: Waardetabel in rechthoek Objecten: Waardetabel in rechthoek met afgeronde hoeken

Referentiewaarden Breuk half = new Breuk(1,2); Breuk b1 = null; Breuk b2; Referentiewaarden zijn pijlen half b1 b2 null?? Breuk teller 1 noemer 2 Sleutelwoord null duidt op ontbreken van pijl

Aliassen Breuk half1 = new Breuk(1,2); Breuk half2 = new Breuk(1,2); Breuk half3 = half1; half1 half2 half3 Breuk teller 1 noemer 2 Aliassen: meerdere pijlen verwijzen naar hetzelfde object Breuk teller 1 noemer 2

Aliassen Breuk half1 = new Breuk(1,2); Breuk half2 = new Breuk(1,2); Breuk half3 = half1; half1.setteller(3); Als de toestand van een object wijzigt, wijzigt ook de toestand van de aliassen half1 half2 half3 Breuk teller 3 1X noemer 2 Breuk teller 1 noemer 2

Garbage collector half1 half2 half3 Breuk teller 1 noemer 2 Na de opdracht half2 = half1; Breuk teller 1 noemer 2 half1 half2 half3 wordt de situatie Breuk teller 1 noemer 2 Instantie waar geen pijl naar verwijst wordt t.z.t. opgeruimd Breuk teller 1 noemer 2

Testen op gelijkheid Bij primitieve typen: == test of waarden gelijk zijn if (a == 5) { Bij referentietypen: == test of verwezen wordt naar hetzelfde object (zijn het aliassen?)

Vergelijken referentiewaarden Wat is de waarden van de volgende expessies? half1 == half2 half1 == half3 false true half1 half2 half3 Breuk teller 1 noemer 2 vergelijken van referentiewaarde met behulp van == levert uitsluitend true op als het pijlen naar hetzelfde object zijn (aliassen) Breuk teller 1 noemer 2

Vergelijken inhoud objecten Maak zelf vergelijkingsmethode (in klasse Breuk) public boolean isgelijk(breuk b) { return teller == b.teller && noemer == b.noemer; } Vergelijking boolean gelijk = half1.isgelijk(half2);

Alias of kopie public Breuk kloon() { return new Breuk(teller, noemer); } methode kloon maakt kopie b1 b2 b3 Breuk teller 3 noemer 4 Breuk b1 = new Breuk(3, 4); Breuk b2 = b1.kloon(); Breuk b3 = b1; toekenning referentiewaarde creëert alias Kopie is een verwijzing naar een nieuw object met gelijke attribuutwaarden als origineel Breuk teller 3 noemer 4

Pseudovariabele this Iedere klasse heeft een extra attribuut beschikbaar: this Voor een gegeven object is this een referentie naar zichzelf b1 b2 Breuk this teller 3 noemer 4 Breuk this teller 1 noemer 2

Voorbeeld gebruik van this Een attribuut is tijdelijk onzichtbaar in een methode waar een formele parameter dezelfde naam heeft als attribuut. this maakt attribuut toegankelijk public class Rekening { private double saldo; } public void setsaldo(double saldo) { this.saldo = saldo; }

Blok Een blok is als volgt opgebouwd { } opdrachten Lokale variabelen gedeclareerd binnen blok, zijn alleen binnen blok zichtbaar

Toekenningsopdracht variabele = expressie; Expressie wordt uitgerekend en toegekend aan variabele Type van expressie moet in principe gelijk zijn aan type van variabele Soms omzetting van types mogelijk Automatisch: coërcie Gedwongen: cast

Type conversie Veilige conversies (widening) Automatisch toegepast (coërcie) byte short int long float double double a = 5; Riskante conversies (narrowing) Expliciete typeconversie (casting) nodig Vorm: (typenaam)expressie int pi = (int)3.1415;

Expressies: deling of heling? int i = 4, j = 3; double d = i / j; waarde d=1 double d = (double)i / j; double d = i / (double)j; double d = 4.0/3; waarde d=1.3333 waarde d=1.3333 waarde d=1.3333