17
Repetition: Introduktion til OOP med C# og .NET Objektorienteret programmering - Realisering af domænemodel

Repetition: Introduktion til OOP med C# og .NET

  • Upload
    ellery

  • View
    27

  • Download
    1

Embed Size (px)

DESCRIPTION

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 - PowerPoint PPT Presentation

Citation preview

Page 1: Repetition: Introduktion til OOP med C# og .NET

Repetition:

Introduktion til OOPmed C# og .NET

Objektorienteret programmering -

Realisering af domænemodel

Page 2: Repetition: Introduktion til OOP med C# og .NET

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)

Page 3: Repetition: Introduktion til OOP med C# og .NET

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

Klasse: Kildekod

e

• ”Kurt”• ”Programmør”• 30000

• ”Ib”• ”Programmør”• 25000

• ”Kis”• ”DBA”• 35000

p1p2p3

Objekter: Eksisterer runtimeRefereres via programvariable

Page 4: Repetition: Introduktion til OOP med C# og .NET

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

Page 5: Repetition: Introduktion til OOP med C# og .NET

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.

Page 6: Repetition: Introduktion til OOP med C# og .NET

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.

Page 7: Repetition: Introduktion til OOP med C# og .NET

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)

Page 8: Repetition: Introduktion til OOP med C# og .NET

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;}

Page 9: Repetition: Introduktion til OOP med C# og .NET

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

Page 10: Repetition: Introduktion til OOP med C# og .NET

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;}}

}}

Page 11: Repetition: Introduktion til OOP med C# og .NET

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;

Page 12: Repetition: Introduktion til OOP med C# og .NET

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

Page 13: Repetition: Introduktion til OOP med C# og .NET

Eksempel på realisering af domænemodel

• Del af design-klassediagram i et system til registrering af ansatte og projekter

Projekt

navnafdeling

GetTotalTimer()TilknyMedarbejder()GetMedarbejdere()

Ansat

navnstillingløn

ArbejderPaa

timer10..* 10..*1 0..*1 0..*

Page 14: Repetition: Introduktion til OOP med C# og .NET

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)

Page 15: Repetition: Introduktion til OOP med C# og .NET

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

Page 16: Repetition: Introduktion til OOP med C# og .NET

Eksempel

• Vi vil se på realiseringen af ansat-projekt eksemplet:

• Vi vil nu også beregne gennemsnitslønnen for medarbejdere på et projekt.

Page 17: Repetition: Introduktion til OOP med C# og .NET

Opgave

• Realisering af domænemodel

• Passende metoder: alle reservationer etc.

Låner

lNr : intfNavn : StringeNavn : String

Reservation

resDato : int

11

0..*

Bog

titel : Stringisbn : Stringforlag : Stringforfattere : String 0..*1

AddReservation()

FindLånerMedRes()