GP3, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 3 Vi begynder 9.15. Slides ligger på hjemmesiden. Du er velkommen til.

Slides:



Advertisements
Lignende præsentationer
Velkommen til Softwarekonstruktion
Advertisements

07 – Kort om OO Introduktion.
T1 – OPGAVE 14.2 LINETT & SABRINA Klasse Varer namespace Opgave_14._2 { class Varer { private string vare; private string farve; private double.
Indledende Programmering Uge 2 - Efterår 2006 Selektioner og interaktion mellem objekter Susanne Brix Lindros.
KONCEPT Klasser og objekter En klasse beskriver et World ArrayList
Object-Orienteret Programmering og Design. 2 Nordjyllands Erhvervakademi – 2009 Indhold “Classes, objects and object-oriented programming (OOP) play a.
Selve objektet versus referencen til objektet Nedarvning
Grundlæggende programmering Efterår 2001
GP9, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 9 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi begynder.
09 – Arv og polymorfi i java
Hvordan man skriver koden.
GP5, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 5 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi begynder.
GP 10, 7/ Grundlæggende programmering Efterår 2001 Forelæsning 10 onsdag 7/ kl. 9:15 – 12:00.
FEN IntroJava AAU1 Opsamling: afvikling af Java-programmer Input fra keyboard og fil Fra en prompt Fra BlueJ Fra NetBeans.
GP12, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 12 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi.
FEN IntroJava AAU1 Java grundelementer Variable og datatyper Sætninger og udtryk Metoder.
Begreber og Redskaber 2. Plan for idag Noget om bestanddelene i et programmeringssprog Syntaksbeskrivelse af java Næste gang: –Binære tal –Repræsentation.
Forelæsning 3.1 Collections Javas for-each løkke
GP6, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 6 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi begynder.
Fundamentale datastrukturer
GP 8, 24/ Grundlæggende programmering Efterår 2001 Forelæsning 8 onsdag 24/ kl. 9:15 – 12:00.
FEN KbP/seminar2: design11 Kontraktbaseret programmering Seminar 2 Klassedesign – grundprincipper Eksempler: Stack Dictionary.
GP 5, 26/ Grundlæggende programmering Efterår 2001 Forelæsning 5 onsdag 26/ kl. 9:15 – 12:00.
Objekter og klasser Rasmus D. Lehrmann DM
GP8, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 8 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi begynder.
GP 6, 13/ Grundlæggende programmering Forår 2002 Forelæsning 6 onsdag 13/ kl. 9:15 – 12:00.
1 Fundamentale datastrukturer. 2 Definitioner: abstrakt datatype, datastruktur Elementære datastrukturer og abstrakte datatyper : arrays, stakke, køer,
Repetition: Introduktion til OOP med C# og .NET
GP 3, 12/ Grundlæggende programmering Efterår 2001 Forelæsning 3 onsdag 12/ kl. 9:15 – 12:00.
Procestræ under afvikling af cp init login shell cp cp src dest.
GP7, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 7 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi begynder.
8 RÅD VEDRØRENDE GOD PROGRAMMERING Effective (brown) Java.
FEN IntroJava AAU1 Klasser og objekter Grundbegreber Student-Course.
Forelæsning 2.2 Tilstand og opførsel (repetition)
Uge 14: distribuerede objekter, fjernprocedurekald, RMI Tirsdag: Introduktion Mulige fordele ved distribuerede objekter Introduktion til RMI: - Interfacets.
KF04 GRAY Item 2, 12, 22, 32, 42, 52. Consider a builder when faced with many constructor parameters Item 2.
03 – Udtryk og metoder. 2 NOEA2009Java-kursus – Udtryk og metoder Udtryk i Java Java har standard udtrykene… Værditildeling Subrutiner og funktionskald.
Hvad består en distribueret applikation af ? Processer der kører på hver deres maskine Tråde - 1 eller flere "letvægtsprocesser" per proces Objekter i.
Opfølgning på Dygtig Skildpadde (Michael) To algoritmeskabeloner findEn findAlle Primitive typer (forfremmelse og begrænsning) Identitet versus lighed.
GP4, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 4 Vi begynder Slides ligger på hjemmesiden. Du er velkommen til.
GP9, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 11 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi begynder.
Forelæsning 7.1 – repetition
Effective Java Blå gruppe. Item 18: Interfaces frem for abstrakte klasser Kan implementeres i klasser der ikke nedarver Eksisterende klasser kan nemt.
Begreber og Redskaber 4. Plan for idag Om metoder, parametre, returværdier Et par ord om objekt-orientering Håndkøring af programmer.
Begreber og Redskaber 3. Plan for idag Om metoder, parametre, returværdier Overblik over klasser,objekter,nedarvning Et par ord om objekt-orientering.
Variabler, klassevariabler, identitet og lighed, collections
Klassevariable- og metoder Tilstand og opførsel på klasseniveau.
DAIMIIntroducerende objektorienteret programmering4B.1 Typer og tilstand i Java Typer, tilstand, erklæring, variable, primitive datatyper, reference- og.
Klasser og objekter. dIntProg, E08Klasser og objekter.2 Grundbegreber Klasser og objekter –beskrivelse –oprettelse Attributter og metoder –tilstand –opførsel.
DAIMIIntroducerende objektorienteret programmering3B.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
DAIMIIntroducerende objektorienteret programmeringkd.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
DAIMIIntroducerende objektorienteret programmering4B.1 Grundlæggende og Reference Typer i Java Typer, tilstand, erklæring, reference- og værdi semantik,
Indledende Programmering Uge 6 - Efterår 2006
Interfaces Afkobling af programkomponenter (eksempel: Comparable)
Objektorienteret analyse og design Ó Bennedsen 2001 Design - part Programmering og systemudvikling Lektion 7 Design - part 2.
Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Java på 20 minutter (eller lidt mere)
Klasser og objekter – grundbegreber.  Michael E. Caspersen, 2001Introducerende objektorienteret programmeringKlasser og objekter.2 Klasser og objekter.
 Jens Bennedsen 2001Multimedie programmering10B.1 Interfaces En ren kontrakt.
 Jens Bennedsen 2001Multimedie programmering4.1 Definition af begreber Interface, implements, klasse.
DAIMIIntroducerende objektorienteret programmering4A.1 Kontrakter og Design Kontraktbaseret design, JavaDoc dokumentation,
Klassevariable- og metoder Funktionalitet på klasseniveau.
 Jens Bennedsen 2001Multimedie programmering3B.1 Specifikationer Betingelser, specifikationer og JavaDoc.
 Jens Bennedsen 2001Multimedie programmering3A.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
Klasser og objekter. dIntProg, F08Klasser og objekter.2 Grundbegreber Klasser og objekter –beskrivelse –oprettelse Attributter og metoder –tilstand –opførsel.
Jesper Mosegaard Multimedie Programmering E2003 MMProg uge44 Java til Lingo Klasser, statements og lister.
Forelæsning Uge 4 – Mandag
Klasser og objekter (Afsnit i manualen).
Forelæsning Uge 2 – Torsdag
Forelæsning Uge 2 – Mandag
Forelæsning Uge 4 – Torsdag
Præsentationens transcript:

GP3, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 3 Vi begynder Slides ligger på hjemmesiden. Du er velkommen til at printe dem nu. Martin Lillholm

GP3, Martin Lillholm 2 Øvelseshold (René Kofoed)

GP3, Martin Lillholm 3 Obligatoriske Opgaver Hvordan gik det med sidste opgave ? Denne uge... lidt sværere... mere fri

GP3, Martin Lillholm 4 Sidste gang Mere om oversættelse, køretidsmiljø, klasser, objekter, Java programmers anatomi Navne (identifiers) Variable (variables) (Simple) typer (types) Operatorer (operators) Udtryk (expressions) Bibliotekter (libraries) Mere om Appletter, GUI og grafik

GP3, Martin Lillholm 5 Denne gang (meget stof) Hvad er det der egentlig sker med klasser, objekter osv,... Klasser, objekter (instanser) Felter (instansvariable) Metoder, konstruktører (lidt om statiske metoder og felter ( klassevariable )) Indkapsling Objektvariable – variable af ikke-primitiv type String, Random, Math og Scanner klasserne Formatteret udskrivning Frames, paneler

GP3, Martin Lillholm 6 Klasser og objekter Klasser – arbejdstegninger –Definitioner af kommende objekters Felter Metoder Objekter – instanser –Konkrete udgaver/instanser af Felter Statiske felter og metoder … senere

GP3, Martin Lillholm 7 Felter I princippet som (lokale) variable i metoder, men... Definerer et objekts tilstand! En af hovedideerne i OO. ”Synlige” i hele klassen (objektet) (alle metoder) ”Lever” lige så længe objektet gør det Får en standardværdi ved objekt instantiering 0 (byte, char, short, int, long), 0.0 (float, double) false (boolean)

GP3, Martin Lillholm 8 Metoder Metoder bruges til at samle en række kommandoer under et navn Parametre og returværdi Genbrug Abstraktion

GP3, Martin Lillholm 9 Konstruktører I princippet ”bare” specielle metoder, der altid hedder det samme som objektet Kaldes ved oprettelse/instantiering af objekter Har ingen returværdi Kaldes ikke explicit En klasse behøver ikke haven nogen konstruktører Altid én standard konstruktør uden parametre En klasse kan have flere konstruktører

GP3, Martin Lillholm 10 Klasser og objekter igen Felter (def.) Konstruktører Metoder Klasse 1 Felter (def.) Konstruktører Metoder Klasse n Felter Klasseref. Objekt m Felter Klasseref. Objekt 1 Felter Klasseref. Objekt 1 Felter Klasseref. Objekt l ”Abstrakt” model/konceptKonkret – instanser

GP3, Martin Lillholm 11 Terningerne er kastet... Felter (Instansvariable) Konstruktør Metoder Ny – ikke primitiv type

GP3, Martin Lillholm 12 Hvordan instantieres et objekt? Typisk ved tildeling og initialisering af variable af klassetype (objektvariable) Ved hjælp af kommandoen new:. operatoren

GP3, Martin Lillholm 13 Hvad sker der ved instantiering? Et nyt objekt oprettes Der afsættes plads til felterne Eventuelle initialiseringer Koden i en eventuel konstruktør udføres Hvilken konstruktør?

GP3, Martin Lillholm 14 Metoder igen int metodenavn (int a, int b,...) { // metode krop variabelErklæring1; kommando1; kommando2; variabelErklæring2;... kommando3; return... } int, double, char, boolean, String,... Returtype Parametre og typer NB: Lokale variable

GP3, Martin Lillholm 15 Hvad sker der ved metodekald? char calc (int num1, int num2, String message) { int sum = num1 + num2; char result = message.charAt (sum); return result; } ch = obj.calc (25, count, "Hello"); Formelle (lokale variable) og faktiske parametre (de faktiske værdier)

GP3, Martin Lillholm 16 Hvad sker der ved metodekald? myMethod(); myMethodcompute

GP3, Martin Lillholm 17 Hvad sker der ved metodekald? doIt helpMe helpMe(); obj.doIt(); main

GP3, Martin Lillholm 18 Metodekroppen char calc (int num1, int num2, String message) { int sum = num1 + num2; char result = message.charAt (sum); return result; } Udtrykket der returneres skal have samme type som formelle retur type sum og result er lokale

GP3, Martin Lillholm 19 return kommandoen Retur typen indikerer hvilken type der returneres En metode der ikke returnerer noget har type void En return kommando angiver den værdi der bliver returneret return Udtryk Udtrykket skal have samme type som den formelle retur type

GP3, Martin Lillholm 20 Konstruktører igen I princippet ”bare” specielle metoder, der altid hedder det samme som objektet Kaldes ved oprettelse/instantiering af objekter Har ingen returværdi Kaldes ikke explicit En klasse behøver ikke haven nogen konstruktører Altid én standard konstruktør uden parametre En klasse kan have flere konstruktører

GP3, Martin Lillholm 21 Terninger igen... og BlueJ –RollingDice.java og Die.java i BlueJ (L&L side )

GP3, Martin Lillholm 22 Indkapsling (1) Et objekt kan ses fra to vinkler –internt – alle detaljer: felter og den definerende klasses metoder –eksternt – de services (objektets interface eller grænseflade) et objekt tilbyder. Alle øvrige detaljer er indkapslede Et andet objekt (en klient) kan benytte objektets services (i praksis metoder) Klienten kender hverken metoders virkemåde eller en interne repræsentation af de data de opererer på Kun objektet selv bør ændre på dets tilstand (felterne) Det bør være uhyre svært for klienter at ændre tilstanden direkte (bør altid ske gennem metoder). Objekter er selv- styrende

GP3, Martin Lillholm 23 Indkapsling (2) Vi kan tænke på objekter som en sort kasse (black box) Eneste mulige adgang bør være gennem services Hvorfor nu alt det her? Metoder Data (felter) Klient

GP3, Martin Lillholm 24 Adgangsbegrænsere (Visibility Modifiers) (1) Benyttes til at implementere indkapsling Tre slags: private, public, protected Venter med protected til vi har behandlet arv Klassemedlemmer (metoder og felter) der erklæres public kan tilgås, kaldes og ændres af alt og alle Klassemedlemmer der erklæres private kan kun tilgås, kaldes og ændres af og i den klasse, hvor de er erklæret Klassemedlemmer der erklæres uden en adgangsbegrænser kan tilgås, kaldes og ændres af alle i klasser i samme pakke (default access)

GP3, Martin Lillholm 25 Adgangsbegrænsere (Visibility Modifiers) (2) publicprivate Variable Metoder Provide services to clients Support other methods in the class Enforce encapsulation Violate encapsulation

GP3, Martin Lillholm 26 Accessors og Mutators For at muliggøre aflæsning og ændring af private tilstandsdata (felter) stilles typisk en række service metoder til rådighed. En accessor metode giver mulighed aflæsning af data (eks. getX ) En mutator metode giver mulighed for at ændre data (eks. setX ) – oftest med en eller flere begrænsninger – eksempelvis korrekt opdatering. Jamen var det ikke lige netop det vi ville undgå?

GP3, Martin Lillholm 27 Flere terninger...

GP3, Martin Lillholm 28 Et eksempel på en klasse... En bil defineres ved: –Et mærke –En tophastighed En bil i BlueJ...

GP3, Martin Lillholm 29 Statiske felter og metoder Lever på klasseniveau på ”tværs” af instanser En af hver per klasse; uanset antallet af instanser Kan tilgås/benyttes uden at klassen instantieres Erklæres med foranstillet keyword static public static double sqrt (double num) {... } public static double PI; Eksempler fra Math klassen. Hvorfor er statiske metoder og felter smarte ?

GP3, Martin Lillholm 30 Statiske metoder og felter Felter (def.) Konstruktører Metoder Klasse 1 Felter (def.) Konstruktører Metoder Klasse n Felter Klasseref. Objekt m Felter Klasseref. Objekt 1 Felter Klasseref. Objekt 1 Felter Klasseref. Objekt l ”Abstrakt” model/konceptKonkret – instanser public static double sqrt (double num) {... } public static double PI;

GP3, Martin Lillholm 31 Hello.java igen igen

GP3, Martin Lillholm 32 HelloGUI.java igen igen

GP3, Martin Lillholm 33 Gemmer en reference (pointer, pegepind) til objektet; ikke selve objektet. Die number1 = new Die (); Die number2; number2 = new Die (); number2 = number1; // Her kopieres kun en reference number1 Die objekt1 number2 Die objekt2 Garbage collection. Objektvariable (Pointer fun with Binky)

GP3, Martin Lillholm 34 String klassen Typen String er en klasse! Strenge er objekter/instanser. String title; title = ”Java Software Solutions”; (title = new String(”Java Software Solutions”)) Virker kun for tekststrenge. Enhver streng konstant refererer/repræsenterer et String objekt Syntaktisk sukker. int a=4; a++; (a = a + 1) a += 3; (a = a + 3)

GP3, Martin Lillholm 35 String klassen Når først et streng objekt er oprettet kan det ikke ændres. (immutable). Men en variabel med en reference til objektet kan sagtens ændres; med mindre den er erklæret final Derimod returnerer mange af String klassens metoder nye instanser og det ser i praksis ud som om man kan ændre et String objekt. L&L side 119 eventuelt i BlueJ hvis tiden tillader

GP3, Martin Lillholm 36 toString metoden Ethver klasse bør have en toString () metode! Kaldes automatisk ved brug af eksempelvis System.out.println og streng sammensætning Die number1 = new Die (); System.out.println(number1); String message = ”Resultatet blev: ” + number1; System.out.println(message); toString kan alt efter behov eller ønske være mere eller mindre kompleks – keep it simple...

GP3, Martin Lillholm 37 Bankkontoen... –Transactions.java og Account.java i BlueJ. (L&L side )

GP3, Martin Lillholm 38 Scanner klassen (1)

GP3, Martin Lillholm 39 Scanner klassen (2)

GP3, Martin Lillholm 40 Random klassen

GP3, Martin Lillholm 41 Statiske metoder og felter igen (Eventuelt konstante) statiske felter (klassevariable) (Alm. felter (instansvariable)) Statiske metoder

GP3, Martin Lillholm 42 Math klassen

GP3, Martin Lillholm 43 DecimalFormat klassen

GP3, Martin Lillholm 44 Spørgsmål... MEGET stof... Spørg løs

GP3, Martin Lillholm 45 GUI by example... java.awt.* javax.swing.* Containere –JFrame –JPanel metoden paintComponent(Graphics page)

GP3, Martin Lillholm 46 SmilingFace.java

GP3, Martin Lillholm 47 SmilingFacePanel.java

GP3, Martin Lillholm 48 Splat.java

GP3, Martin Lillholm 49 SplatPanel.java

GP3, Martin Lillholm 50 Circle.java (1)

GP3, Martin Lillholm 51 Nok for i dag!