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.

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
Selve objektet versus referencen til objektet Nedarvning
Grundlæggende programmering Efterår 2001
GP10, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 10 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi.
09 – Arv og polymorfi i java
Hvordan man skriver koden.
Structs Structs allokeres på stakken Memory-allokering sker ved oprettelse af variabel og ikke ved new Der kan defineres metoder incl. Constructor. Eksempel.
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.
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.
Forelæsning 3.1 Collections Javas for-each løkke
Fundamentale datastrukturer
GP 8, 24/ Grundlæggende programmering Efterår 2001 Forelæsning 8 onsdag 24/ kl. 9:15 – 12:00.
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.
Comparable Students German Students Composite Pattern State Pattern Observer Pattern Collections Interfaces Abstrakte klasser Design Patterns.
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.
C#: Udtryk og metoder Kilde: Joe Hummel. 2 Nordjyllands Erhvervakademi – 2008 Indhold “With regards to programming statements and methods, C# offers what.
03 – Udtryk og metoder. 2 NOEA2009Java-kursus – Udtryk og metoder Udtryk i Java Java har standard udtrykene… Værditildeling Subrutiner og funktionskald.
GP4, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 4 Vi begynder Slides ligger på hjemmesiden. Du er velkommen til.
9. Interfaces. 2 Nordjyllands Erhvervakademi Objectives “Good class design starts with good application design — how many classes, do they relate.
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.
Begreber og Redskaber 11. Plan for idag Lidt afrunding: Collections Framework i Java Noget om oversættere og sprog Evaluering Sidste gang øvelser før.
GP3, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 3 Vi begynder Slides ligger på hjemmesiden. Du er velkommen til.
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
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6B.1 Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence.
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
Polymorfi Abstrakte klasser, substitutionsprincippet, statisk og dynamisk type.
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 programmering4.1 Definition af begreber Interface, implements, klasse.
 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.
Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence s; int i; int j; Sequence s; String s; int i; int j;
I o p o DAIMI, AU, September 1999Introducerende objektorienteret programmering5C.1 Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence.
Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence s; int i; int j; Sequence s; String s; int i; int j;
Objecter Introduktion Webintegrator HF1 PHP Object orienteret.
Forelæsning Uge 4 – Torsdag
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:

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 Martin Lillholm

GP6, Martin Lillholm 2 Obligatorisk opgave Var opgaven til i onsdags 1.For nem 2.For svær – mon ikke vi lander heromkring denne gang? 3.Tilpas – skulle bruge noget tid og tanker på den, men så var den også til at løse/forstå. Er der nogen, der ikke har afleveret fordi den slet ikke var til at få hul på?

GP6, Martin Lillholm 3 Sidste gang Tabeller (arrays) Tabeller med mere end en dimension Tabeller med objekter Kommandolinieargumenter Klassen ArrayList Indlæsning fra tekstfil

GP6, Martin Lillholm 4 Småting fra sidst Tabeller og initialiseringslister: int a = 5; a = 7; int[] nums = {1,2,3}; nums = {4,5,6,7}; nums = new int[]{4,5,6,7}; Regning med floats float a = 5, b = 6; float avg = ((a + b) /2.0F); System.out.println("Gennemsnit: " + avg); L&L side 75 – literals. float konstant

GP6, Martin Lillholm 5 Denne gang Ganske kort om programudvikling En slags UML klassediagrammer –Klasser –Attributter (felter, klassevariable) –Metoder inkl. konstruktører –Afhængigheder (dependencies) –Aggregations kursorisk Mere om metoder og parametre og virkefelt (scope) Mere om statiske variable (klassevariable) og metoder Vi venter med: –Interfaces og opremsningstyper (enumerations)

GP6, Martin Lillholm 6 Softwareudvikling Typiske (forsimplet) udviklingsfaser for software –Opgave –(Forundersøgelse) –Kravspecifikation –Analyse og Design –Implementation oftest flere iterationer –Afprøvning OO-design – simpelt –Klasser (kan være navneord) –Ansvar (kan være udsagnsord) –Walkthroughs –(Ikke pensum)

GP6, Martin Lillholm 7 (En slags) UML klassediagrammer UML er meget mere end blot klassediagrammer UML: Booch, Jacobsen and Rumbaugh (The Three Amigos) Benyttes til at beskrive klasser og statiske sammenhænge mellem klasser Indeholder typisk: –Klasser –Attributter (felter, klassevariable) –Metoder inkl. konstruktører –Afhængigheder (dependencies) –Aggregations (kursorisk) Mere information: Martin Fowler, UML Distilled eller Links på hjemmeside

GP6, Martin Lillholm 8 UML Klassediagrammer (Statisk overblik) Person TestPerson Math AnsatStuderende Bankkonto Dependency Aggregation – has-a (Inheritance – is-a)

GP6, Martin Lillholm 9 UML Klassediagrammer Klassedetaljer Person Klassenavn Hvor detaljeret skal et klassediagram være? Hvad kan det bruges til? Felter Konstruktør(er) Metoder -navn : String -højde : int -vægt : int modifier (+/-/#) identifier : type Person(String, int, int) +getNavn() : String +setNavn(String) : void +toString() : String identifier (nul eller flere typer) modifier (+/-/#) identifier (nul eller flere typer) : (retur) type

GP6, Martin Lillholm 10 Metoder – opgaveabstraktion Opgaveabstraktion – en del af programdesign Metoder er klassers opgaveløsere eller arbejdsheste Den reelle kode skrives altid i metoder Designprocessen starter typisk med identificere klasser (navneord er gode kandidater) og deres felter Metoder kan også ses som ansvar (udsagnsord er gode kandidater) En given opgave/ansvar/metode hører typisk (naturligt) til en klasse Algoritmer og pseudokode hjælper ved design Keep it simple! Hellere for mange end for få metoder main er meget speciel: statisk og hvor afviklingen starter Hvorfor skriver I mange gange statiske metoder til øvelserne ?

GP6, Martin Lillholm 11 Metoder – parametre Parametre er i virkeligheden lokale variable, der initialiseres ved metode kald – call by value. Værdien af den faktiske parameter kopieres over i den formelle parameter, der så oprettes som lokal variabel ”Forskel” på parametre af primitiv type og objektvariable –For primitive typer kopieres værdien ved metodekald –For en objektvariabel kopieres referencen ved metodekald (aliaser, sidevirkninger) –ParameterTester.java L&L side i BlueJ 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");

GP6, Martin Lillholm 12 Virkefelt – scope – revisited En variabels virkefelt definerer, hvor en variabel kan benyttes og/eller hvor længe den er i ”live”. En variabels virkefelt går fra umiddelbart efter den erklæres til slutningen af den inderste blok ( {} ) blok der omgiver den. Et felt (instans variabel) har hele klassen som virkefelt Virkefeltet for en metodes eller konstruktørs parametre er hele metodens eller konstruktørens krop For en kontrolvariabel erklæret i en for sætning er virkefeltet hele for sætningens krop inkl. headeren En variabel eller parameter kan ikke redefineres inden for dens virkefelt Et felt (instans variabel) kan skygges af lokale variable og parametre

GP6, Martin Lillholm 13 Virkefelt – scope – eksempler (Sestoft, 2002)

GP6, Martin Lillholm 14 Metoder – overlæsning (overloading) Overlæsning benyttes til at knytte flere definitioner til et enkelt metodenavn Hvis man benytter overlæsning kan den faktiske metode, der skal kaldes ikke bestemmes ud fra navnet alene Flere metoder med samme navn skelnes ved deres signatur Signaturen defineres som antal, type og rækkefølge for parametrene En signatur kan kun benyttes én gang eller anderledes sagt overlæsning kræver unikke signaturer Vi har tidligere kun set overlæsning ifbm. konstruktører, men det kan også benyttes til almindelige metoder

GP6, Martin Lillholm 15 Overlæsning Oversætteren afgører hvilken udgave af metoden der skal kaldes ved at se på parametrene (signaturen): float tryMe(int x) { return x +.375; } float tryMe(int x, float y) { return x*y; } result = tryMe(25, 4.32) Anvendelse

GP6, Martin Lillholm 16 Overlæsning Hvorfor er det overhoved smart ? –Konstruktører –Metoder – eksempel: println (String s) println (int i) println (double d) System.out.println ("The total is:"); System.out.println (total); Bemærk at returtypen ikke er en del af signaturen Hvis den var, ville to signaturer kunne være identiske på nær returtypen. Hvorfor ville det være et problem ?

GP6, Martin Lillholm 17 Statiske felter og metoder Erklæres ved brug af static private static int count = 0;... public static int getCount (){ return count; } Statiske felter og metoder kan benyttes uden at instantiere en klasse. Felter allokeres og eventuelt initialiseres når et program startes. Hvordan virker statiske felter og metoder egentlig ? (Tavlegennemgang) Vi har set eksempler fra eksempelvis Math klassen –Math.PI –Math.Pow (2,3) Eksempel SloganCounter.java L&L side 6.1 i BlueJ UML og statiske felter og metoder

GP6, Martin Lillholm 18 main metoden public static void main (String[] args) { …; } Hvad betyder alle delkomponenter? Det kan vi rent faktisk svare på nu !!

GP6, Martin Lillholm 19 Diskussion af statisk vs. instanser Skyd løs …

GP6, Martin Lillholm 20 this referencen tillader et objekt at referere sig selv Når this benyttes inden i en metode refereres til objektet (en konkret instans), der indeholder metoden Hvis this benyttes i metoden tryMe i nedestående to instanser: refererer vi i første tilfælde obj1 og i andet tilfælde obj2 this referencen obj1.tryMe(); obj2.tryMe();

GP6, Martin Lillholm 21 this referencen Kan blandt andet benyttes til at skelne mellem felter og parametre med samme navne i metoder og konstruktører: class Account { String name; long acctNumber; double balance; public Account (String name, long acctNumber, double balance) { this.name = name; this.acctNumber = acctNumber; this.balance = balance; } class Account { … public Account (String newName, long newAcctNumber, double newBalance) { name = newName; acctNumber = newAcctNumber; balance = newBalance; }

GP6, Martin Lillholm 22 Ordet er frit … Spørgsmål af enhver art …

GP6, Martin Lillholm 23 Sudoku – næste skridt