1 / 17

Repetition: Introduktion til OOP med C# og .NET

Repetition: Introduktion til OOP med C# og .NET. Objektorienteret programmering - Realisering af domænemodel. Objekt ifølge OOA&D. Et objekt har identitet, tilstand og adfærd: Objektets tilstand er værdierne af de attributter, der kendetegner objektet

ellery
Download Presentation

Repetition: Introduktion til OOP med C# og .NET

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Repetition:Introduktion til OOPmed C# og .NET Objektorienteret programmering - Realisering af domænemodel

  2. Objekt ifølge OOA&D • Et objekt har identitet, tilstand og adfærd: • Objektets tilstand er værdierne af de attributter, der kendetegner objektet • Adfærd bevirker at objektets tilstand kan aflæses eller ændres • Adfærd er defineret gennem objektets operationer (metoder og properties)

  3. ”Kurt” • ”Programmør” • 30000 p1 p2 p3 • ”Ib” • ”Programmør” • 25000 • ”Kis” • ”DBA” • 35000 Klasse: Kildekode Klasseog objekt • Klassen er den fælles definition af objekterne. • Objekterne er de konkrete forekomster af klassen • Klasser eksisterer hele tiden • Objekter kommer og går • Klassen er den statiske beskrivelse i kildekoden • Objekter eksisterer dynamisk • Objekter: • Eksisterer runtime • Refereres via programvariable

  4. Oprettelse af objekter • Kunde k; • opretter en reference • k = new Kunde(123, ”Michael Jackson”); • kald af constructoren som står for initialisering af objektets attributter • new allokerer plads til objektet • new sender adressen retur til referencen k

  5. Tilstand • Attributterne er defineret på klassen, og bliver tildelt en værdi i objekterne • Properties giver kontrolleret adgang til attributterne • Kontos attributter: • kontonummer, saldo, bevilget overtræk, rente, indehaver mm. • Ansat • navn, afdelingsnummer, løn, titel mm.

  6. Adfærd • Objekternes adfærd er givet ved • metoder - defineres (realiseres) i klassen. • properties - defineres ligeledes i klassen. • Adfærd forårsager i visse tilfælde en tilstandsændring • Konto • Haev(), Indsaet(), Saldo (property) osv.

  7. Constructor • Er en metode, som • initialiserer objektet – giver objektet en starttilstand • Rent praktisk skal en constructor have samme navn som klassen • Kan – ligesom andre metoder - forekomme i flere versioner (metodeoverloading)

  8. Metodeoverloading • Flere metoder med samme navn kan erklæres i samme scope, blot de har forskellige parameterlister. • Fx: public Bankkonto(int kontonr){ kontonummer = kontonr; saldo = 0; } public Bankkonto(int kontonr; double saldo){ kontonummer = kontonr; this.saldo = saldo; }

  9. This • Reference til objektet selv • Bruges bl.a. til at undgå navnesammenfald • this.saldo = saldo; • Bruges også til kald af egne constructors • public Kunde(string navn): this(navn, getNewId()) • Her vil den constructor der er brugt under oprettelsen af objektet sende kaldet videre til en anden constructor

  10. Properties public class Kunde { private int kundenummer; private string navn; public string Navn{ get{ return navn;} set{ navn = value;} } public int Kundenummer { get{return kundenummer;} } } }

  11. Brug af properties Kunde k = new Kunde(”Jens Jørgensen”); k.Navn = ”Jens Petersen”; string navn = k.Navn; k.navn = ”Jens Petersen”; //fejl private attribut k.Kundenummer = 21; //fejl read-only int x = k.Kundenummer;

  12. Access Modifiers • Public • Kan tilgås af alle metoder fra alle objekter • Private • Kan tilgås af den definerende klasses medlemmer og ikke andre • Protected • Kan tilgås af klassen selv og af arvinger – privat for alle andre • Internal • Kan tilgås af den definerende klasse og alle klasser i samme assembly • Protected internal • Kan tilgås af den definerende klasse, klasser i samme assembly og fra arvinger

  13. Eksempel på realisering af domænemodel • Del af design-klassediagram i et system til registrering af ansatte og projekter Projekt Ansat navn navn ArbejderPaa afdeling stilling timer 1 1 løn 0..* 0..* 0..* 0..* 1 1 GetTotalTimer() TilknyMedarbejder() GetMedarbejdere()

  14. Realisering af objektforbindelse • Designovervejelser • Hvilken vej skal objekterne kunne tilgås • Forbindelse til 1 objekt • Simpel objektreference • Forbindelse til * objekter • Reference til collection (fx ArrayList)

  15. Collection ArrayList • Dynamisk array (System.Collections) • Elementer kan tilgås som i array med [] • Vigtige metoder: • Add(Object o) – tilføjer o bagerst • RemoveAt(int i) – sletter på index i • Count – property som returnerer antallet af elementer • Resten findes online

  16. Eksempel • Vi vil se på realiseringen af ansat-projekt eksemplet: • Vi vil nu også beregne gennemsnitslønnen for medarbejdere på et projekt.

  17. Opgave • Realisering af domænemodel • Passende metoder: alle reservationer etc. Bog titel : String isbn : String Reservation forlag : String forfattere : String 1 0..* resDato : int AddReservation() 0..* FindLånerMedRes() Låner lNr : int fNavn : String eNavn : String 1 1

More Related