Velkommen til Softwarekonstruktion

Slides:



Advertisements
Lignende præsentationer
Kort om JavaScript Afvikles i browser på klienten Sendes fra server (php, asp, aspx, htm) eller startes i klient som htm/html fil. Skabelon: –”main” -
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.
SQL 1 DDL og DML.
Array og ArrayList Et slideshow. Som er sødt.. Hvordan virker ArrayList?  ArrayList NAVN = new ArrayList ();  NAVN.add(”Værdi”);  NAVN.add(index, ”værdi”)
KONCEPT Klasser og objekter En klasse beskriver et World ArrayList
Programmeringsteknologi: Lektion 1
Distribueret programmering, specielt.NET Remoting Rasmus D. Lehrmann DM
Object-Orienteret Programmering og Design. 2 Nordjyllands Erhvervakademi – 2009 Indhold “Classes, objects and object-oriented programming (OOP) play a.
Array vs. ArrayList. Arrays Et array er en struktureret metode til at gemme flere værdier af den samme datatype. Data’en i et array ligger op ad hinanden.
Grundlæggende programmering Efterår 2001
Objektorienteret programmering
09 – Arv og polymorfi i java
Hvordan man skriver koden.
VOOP, 8 april Refleksion i objekt orienterede programmeringssprog Mandag 8/ Kasper Østerbye.
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.
FEN IntroJava AAU1 Java grundelementer Variable og datatyper Sætninger og udtryk Metoder.
Delphi og C++ Builder C++ Referencer og pointere.
Efterår 2009VVU-IT: Softwarekonstruktion1 Velkommen til Softwarekonstruktion Aase Bøgh, Systemudvikling Martin Siegumfeldt,
Globaliseringsredegørelsen 24.mar. 14 Figurer fra Danmark tiltrækker for få udenlandske investeringer i Sådan ligger landet
Forelæsning 3.1 Collections Javas for-each løkke
Intro til C# apps Kodegennemgang af simpel C# app
Delphi og C++ Builder C++ Builder. C++ Historie Sproget blev designet for AT&T af danskeren Bjarne Stoustrup En objektorienteret videreudvikling.
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.
Lektion 7 Læsestof: Kopier fra Caranno
Fundamentale datastrukturer
Mønstre En lille introduktion. Singleton Tilgå et objekt igennem klassereference i stedet for objektreference.  Overflødiggør referencer til objektet.
Eksempel på realisering af domænemodel
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.
Forelæsning 5.1 Brug af klassen Collections og interfacet Comparable samt parametriserede typer Projektuge: Ants and Spiders / Lommeregner dIntProg,
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
10. Datastrukturer. 2 Nordjyllands Erhvervakademi Collections library Datastrukturer i.NET kaldes normalt Collections Findes i namespace System.Collections.
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
Procestræ under afvikling af cp init login shell cp cp src dest.
Paradigmer i Programmering 2. Sammensatte typer Tupler og lister Programmering med rekursion Programmering med pipe-lines Programmering med polymorfe.
Comparable Students German Students Composite Pattern State Pattern Observer Pattern Collections Interfaces Abstrakte klasser Design Patterns.
8 RÅD VEDRØRENDE GOD PROGRAMMERING Effective (brown) Java.
FEN IntroJava AAU1 Klasser og objekter Grundbegreber Student-Course.
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.
C#: Data Typer. 2 Nordjyllands Erhvervakademi Indhold: “.NET is designed around the CTS, or Common Type System. The CTS is what allows assemblies,
9. Interfaces. 2 Nordjyllands Erhvervakademi Objectives “Good class design starts with good application design — how many classes, do they relate.
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.
 Jens Bennedsen 2002Objektorienteret systemudvikling Design klasse model ”Klassemodellen på vej til kode”
Variabler, klassevariabler, identitet og lighed, collections
DAIMIIntroducerende objektorienteret programmering4B.1 Typer og tilstand i Java Typer, tilstand, erklæring, variable, primitive datatyper, reference- og.
 Jens Bennedsen 2002Objektorienteret systemudvikling Design -> kode Mapning af et klassediagram til kode.
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)
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.
Objecter Introduktion Webintegrator HF1 PHP Object orienteret.
Klasser og objekter (Afsnit i manualen).
Forelæsning Uge 4 – Torsdag
Præsentationens transcript:

Velkommen til Softwarekonstruktion Aase Bøgh, aabo@noea.dk: Systemudvikling Martin Siegumfeldt, mars@noea.dk: Programmering og databaser

Agenda Opsamling fra sidste gang Grundlæggende objektorienteret programmering OOP i C# 1 – individuelle objekter OOP i C# 2 – relationer mellem objekter

Opgaver fra sidst: sweep- og søgeskabeloner For alle opgaverne skal det overvejes hvilken skabelon, der benyttes, og hvordan operationerne er konkretiseret: Lav en metode, som returnerer antallet af lige tal i et int[ ]. Test den. (Vink: et tal er lige, hvis rest ved division med 2 er 0) Lav en metode, som returnerer antallet af tal i et double[ ], som ligger mellem 10,0 og 20,0. Test den. Lav en metode, som tager en int x som parameter, og returnerer true, hvis x findes i et int [ ]. Ænder metoden, så index på første forekomst af x i arrayet returneres. Lav en metode, som finder første forekomst af et tegn i et char[ ]. Lav en metode, som finder antallet af vokaler i et char[ ]. (Vink: lav først en metode, som tager et bogstav som parameter, og returnerer true, hvis bogstavet er en vokal, ellers false.)

Agenda Opsamling fra sidste gang Grundlæggende objektorienteret programmering OOP i C# 1 – individuelle objekter OOP i C# 2 – relationer mellem objekter

C# programstruktur Normalt vil et C#-program bestå af en række klasser disse beskriver objekter i problemområdet, f.eks Kunde, Konto, Vare mv Mindst en af disse skal indeholde en ”Main” metode, der er programmets startpunkt (entry point) Objekter oprettes (instantieres på baggrund af klasser) Vilkårligt antal objekter kan oprettes fra samme klasse En klasse definerer objekternes Tilstand gennem variable (variable) Adfærd gennem metoder (og properties (”egenskaber”)) Objekter interagerer gennem referencer og ved at kalde hinandens metoder

C# - objekter og klasser Klassen er definitionen af typen Indeholder metoder, instansvariable, constructors og properties Objektet er den faktiske forekomst Alle klasser arver fra ”System.Object”, dvs. har nogle fælles egenskaber, som gælder for alle objekter: Indeholder bl.a. ToString() og Equals() Objekter oprettes med keyword: ”new”

Agenda Opsamling fra sidste gang Grundlæggende objektorienteret programmering OOP i C# 1 – individuelle objekter OOP i C# 2 – relationer mellem objekter

Eksempel på en klasse class Student //definition af en klasse { private string navn; //instansvariable private string adresse; private int alder; public Student(string navn, string adr, int alder) //constructor this.navn = navn; this.adresse = adr; this.alder = alder; } public override String ToString() //medlemsfunktion return navn + " " + adresse + " " + alder;

Eksempel på brug af klasse/objekt i C# class MainClass //klasse indeholdende Main { static void Main(string[] args) Student s = new Student("Carl", "Bygaden", 34); //oprettelse af objekt Console.WriteLine(s.ToString()); //kald til objektets metode }

Class anatomi Attributter er definition af variable som er knyttet til klassen <modifiers> <datatype> <navn> Metoder er en række statements, der udføres (typisk på attributterne) ved en kommando, ved kald af metoden <modifiers> <returtype> <navn>(<parameterliste>){ //kode….. }

Constructors Constructors opgave er at initialisere objektet, dvs. tildele instansvariablene en startværdi Har samme navn som klassen og ingen returtype Kaldes under objektoprettelse: Student s = new Student("Carl”,”Bygaden”, 34); s er en reference til et objekt af typen Student new skaffer (allokerer) lager til objektet, og kalder klassen Students constructor med de værdier (parametre), som objektets attributter skal initialiseres med.

Objekt initialisering Objektreferencer er basalt set variable: Student s = new Student("Carl","Bygaden",34); Venstre siden er erklæring af en variabel af typen ”Student” - bemærk ligheden til erklæring af simple variable: ”int x;” Højre siden er en værdi-tildeling: s = new Student("Carl","Bygaden",34);

Objekt manipulation Metoder kaldes ved ”dot (”.”)”-notation (dereference): s.ToString() Objekters tilstand: refererer til attributternes værdi Objekters adfærd: refererer til objektets metoder Ændring og aflæsning af objekters tilstand bør forgå ved metodekald eller i C# ved brug af properties (se næste slide)

Properties …i class Student: private string navn; private int alder; public string Navn{ get{ return navn;} set{ navn= value;} } public int Alder{ //read-only get{ return alder;} Særlig syntaks for set- og get-metoder, så det ligner tildeling til variable, men det er metodekald! Konventionen er at en property hedder det samme som attributten, men med stort begyndelsesbogstav Properties kontrollerer adgangen til attributten, fx read-only

Indkapsling Man må ikke kunne ændre/aflæse objektets tilstand (attributter) direkte, men kun vha. metoder Ideen i dette princip er at man kun skal kunne ændre i et objekts tilstand ved at overholde nogle regler, som er defineret i metoderne Til hjælp til at overholde sådanne principper bruge visibility modifiers (public/private)

Øvelse: Implementer klassen Fag Constructor kunne være Fag(string betegn, int kar) Et fag er bestået, hvis karakteren er mindst 6 (vi bruger stadig den gamle skala) Tips Start med en tom klasse – kompiler Tilføj constructor – kompiler og test Tilføj attributter – kompiler Tilføj properties – kompiler og test Tilføj metoder – kompiler og test

Eksempler med referencetyper Oprettelse, assignment og sammenligning: Customer c1, c2, c3; c1 = new Customer("Flemming Sander", 36259); c2 = new Customer(”Bjarne Riis", 55298); c3 = null; // c3 refererer ingenting c3 = c1; // c3 refererer samme objekt som c1 if (c1 == null) ... // refererer c1 et objekt? if (c1 == c2) ... // sammenligner referencer if (c1.Equals(c2)) ... // sammenligner objekter

Hvornår er objekter ens? Klasser bør override Equals-metoden public class Customer { private int id; . public override bool Equals(object obj) Customer other; if ((obj == null) || (!(obj is Customer))) return false; // helt sikkert ikke ens other = (Customer) obj; // typecast for adgang return this.id == other.id; // ens hvis ens id... }

Metode kald class MainClass{ //klasse indeholdende Main static void Main(string[] args) { Student s = new Student("Carl", "Bygaden", 34); //oprettelse af objekt Console.WriteLine(s.ToString()); //kald til objektets metode s.Adresse = "Nygade"; s.FyldAar(); Console.WriteLine(s.Adresse + " " + s.Alder); }

Agenda Opsamling fra sidste gang Grundlæggende objektorienteret programmering OOP i C# 1 – individuelle objekter OOP i C# 2 – relationer mellem objekter

Tilbage til studerende og fag Vi vil lave en forbindelse mellem Student og Fag: Den kan realiseres ved at definere en attribut i Student af typen fag Denne attribut skal have defineret properties

Property’en Følger bruges til at tildele værdier og aflæse referencen class Student{ //… private int alder; private Fag følger; public int Alder{//read-only get{ return alder;} } public Fag Følger{ get{ return følger;} set{ følger= value;} Referencen defineres Property’en Følger bruges til at tildele værdier og aflæse referencen

static void Main(string[] args){ Student s = new Student("Carl","Bygaden",34); Console.WriteLine(s.ToString()); //kald til objektets metode s.Adresse= "Nygade"; s.FyldAar(); Console.WriteLine(s.Adresse+" "+s.Alder); Fag f= new Fag("Softwarekonstruktion",-1); s.Følger= f; Console.WriteLine(s.ToString()+" "+s.Følger.ToString()); s.Følger.Karakter= 11; } Kalder ToString på Fag Består eksamen

Tilbage til studerende og fag Vi vil lave en forbindelse mellem Student og Fag, men en studerende skal kunne have flere fag: I stedet for en attribut skal vi have en liste af fag Vi skal finde metoder til at vedligeholde listen: TilføjFag(Fag f) UdskrivFag()

ArrayList: En klasse, som indkapsler et array af objekter, og har nyttige metoder: ArrayList s= new ArrayList(); s.Clear(); s.Insert(i,e); s.RemoveAt(i); s.Add(e); s.Count; s[i] int x= s[i]; s[i]= x;

Eksempel using System; using System.Collections; class TestSeqInt{ private static ArrayList sekvens = new ArrayList(); static void Main(){ for(int i= 0; i<10; i++) sekvens.Add(i); Udskriv(sekvens); sekvens[4]=1111; Console.WriteLine(sekvens[4]); sekvens.Insert(4,44); } public static void Udskriv(ArrayList s){ for(int i= 0; i<s.Count; i++) Console.WriteLine(s[i]);

ArrayList af fag på Student class Student{ //definition af en klasse private ArrayList følger; public Student(string navn, string adr,int alder){ //constructor //… følger= new ArrayList(); } public void TilføjFag(Fag f){ følger.Add(f); public void UdskrivFag(){ foreach(Fag f in følger) Console.WriteLine(f.ToString());

Test af Student static void Main(string[] args){ Student s = new Student("Carl","Bygaden",34); //oprettelse af objekt Console.WriteLine(s.ToString()); s.Adresse= "Nygade"; s.FyldAar(); Console.WriteLine(s.Adresse+" "+s.Alder); Fag f= new Fag("Softwarekonstruktion",11); s.TilføjFag(f); Fag f2= new Fag("Programmeringsteknologi",-1); s.TilføjFag(f2); s.UdskrivFag(); }

Opgaver 1. Student Lav en metode på Student, som beregner den studerendes karaktergennemsnit. Lav en metode, som returnerer sand, hvis den studerende har bestået et givet fag (fagbetegnelse som inputparameter) 2: KundeCD Lav en klasse Kunde (navn, telefon) Lav en Main-metode, som tester Lav en klasse CD (titel, kunstner, pris) Test den nye klasse En kunde kan købe en række CD’ere Lav en ArrayList til CD’ere på Kunde, lav en metode til at tilføje CD’ere og lav en metode til udskrivning af alle CD’ere Test Lav en metode på Kunde, som kan finde samlet pris.