Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

Programmeringsteknologi: Lektion 1

Lignende præsentationer


Præsentationer af emnet: "Programmeringsteknologi: Lektion 1"— Præsentationens transcript:

1 Programmeringsteknologi: Lektion 1
Præsentation Orientering om: praktiske forhold faget Fundament: C# fra Softwarekonstruktion? FEN Nordjyllands Erhvervsakademi

2 Nordjyllands Erhvervsakademi
Præsentation Kursusholdere: Finn E. Nordbjerg – Lektor v/Datamatikeruddannelsen, NOEA - Nordjyllands Erhvervsakademi Ekstern lektor ved Aarhus og Aalborg Universiteter Efteruddannelse af IT-folk i erhvervslivet Programmering, Programmeringssprog, Databaser ”Gammel” (meget) AAU’er (mat/dat 1983) Jens Houmann – Og jer? mailliste FEN Nordjyllands Erhvervsakademi

3 Nordjyllands Erhvervsakademi
Praktisk Planlægning Bøger Software Logins Mail Eksamen FEN Nordjyllands Erhvervsakademi

4 Introduktion til objektorienteret programmering
Objekter og klasser - indhold og opbygning FEN Nordjyllands Erhvervsakademi

5 Definition af objekt og klasse
En repræsentation af et koncept fra virkeligheden, realiseret vha. data knyttet til dette koncept samt en række funktioner gennem hvilke objektet kan ændre eller aflæse egne data. Klasse En type, som definerer de data og funktioner der er nødvendige for at beskrive en gruppe af objekter som alle repræsenterer samme koncept fra virkeligheden. Klassen ”definerer objekternes udseende” og objekter er fysiske forekomster af klassen Klassen er statisk – eksisterer på compiletime. Objekter er dynamiske – eksisterer på runtime. FEN Nordjyllands Erhvervsakademi

6 Nordjyllands Erhvervsakademi
Attributter (data) Attributterne definerer de data vi ønsker at registrere. Attributterne defineres på klassen, og bliver tildelt en konkret værdi i objekterne. Kontos attributter: kontonummer, saldo, bevilget overtræk, rente mm. Ansat navn, afdelingsnummer, løn, titel mm. Et objekts tilstand kan beskrives som attributternes værdi på et givet tidspunkt FEN Nordjyllands Erhvervsakademi

7 Nordjyllands Erhvervsakademi
Metoder (funktioner) Objektets funktioner er givet ved de metoder der er tilknyttet objektet. Disse metoder defineres (kodes) i klassen. Det er kald til metoderne der får objektet til at ændre tilstand Konto Haev(), Indsaet(), GetSaldo() osv. Ansat GivLoenforhoejelse(), SetTitel() osv. FEN Nordjyllands Erhvervsakademi

8 Nordjyllands Erhvervsakademi
Properties Bruges til at sætte og aflæse værdien af objektets attributter Dækker over såkaldte setter- og gettermetoder En setter-metode ændrer værdien af en attribut En getter-metode aflæser værdien af en attribut FEN Nordjyllands Erhvervsakademi

9 Nordjyllands Erhvervsakademi
Constructor Er en bestemt metode, som skal have samme navn som klassen. Dens opgave er at initialisere objektet under oprettelse. Eksempel på oprettelse af objekt Konto k = new Konto(); Konto() er et kald til Konto-klassens constructor Det er new, der opretter plads til objektet i hukommelsen sørger for at variabelnavnet (referencen) refererer til dette stykke hukommelse – new er i virkeligheden en funktion der returnerer en heap-adresse Constructors kan overloades FEN Nordjyllands Erhvervsakademi

10 Nordjyllands Erhvervsakademi
Opbygning af klasser Klasser bygges op efter skabelonen: class Klassenavn { dataerklæringer constructors metoder } FEN Nordjyllands Erhvervsakademi

11 Opbygning af metoder En metode bygges op efter skabelonen
accessmodifier returtype Metodenavn (parameterliste) { sætninger } public int SumAfToHeltal (int tal1, int tal2) { int sum; sum = tal1 + tal2; return sum; Lokal variabel return Parametre Acessmodifier: public/private FEN Nordjyllands Erhvervsakademi

12 Klassen Konto - attributter og constructor
namespace Konto { public class Konto private double saldo; private int kontonummer; private int rente; public Konto(int kontonr, int r) saldo = 0; kontonummer = kontonr; rente = r; } FEN Nordjyllands Erhvervsakademi

13 Nordjyllands Erhvervsakademi
Metoder public bool Haev(double belob) public void Indsaet(double belob) public void TilskrivRente() FEN Nordjyllands Erhvervsakademi

14 Nordjyllands Erhvervsakademi
Properties public int Rente { get{return rente;} set{if( value>=0) rente = value;} } Lad os prøve at lave Konto i C# vha. Visual Studio. Source er her. FEN Nordjyllands Erhvervsakademi

15 Predefinerede klasser - string
string test = ”Hej verden”; En streng kan indekseres, startende fra 0. I eksemplet test er tegnet på plads nummer 0 et ”H”, på plads 1 et ”e”, på plads 4 et ” ”, osv. Der findes en række anvendelige metoder og properties på strenge, fx CompareTo(string str) returnerer hvorvidt strengen kommer før eller efter parameteren mht. alfabetisk rækkefølge ToUpper() returnerer strengen skrevet med store bogstaver Substring(int start, int antal) returnerer delstrengen fra indeks start og antal tegn frem Length returnerer antallet af tegn i strengen FEN Nordjyllands Erhvervsakademi

16 Nordjyllands Erhvervsakademi
Indkapsling Et objekt kan opfattes som en ”black box” der tilbyder en række services - fx objekter af typen Konto. Services defineres i service-metoder (erklæret public i klassen) Service-metoderne kan bruge en række hjælpe-metoder (erklæret private i klassen) Klassens attributter er indkapslet (erklæret private) Klassens attributter tilgås gennem metoder/properties Data kan også erklæres public og private, men bør altid være private FEN Nordjyllands Erhvervsakademi

17 Nordjyllands Erhvervsakademi
Abstraktion Det er praktisk at kunne anvende et objekt uden at skulle tænke på implementations-detaljer. Det er nemmere at kapere et komplekst edb-system hvis man ikke skal beskæftige sig med implementationsdetaljerne FEN Nordjyllands Erhvervsakademi

18 Nordjyllands Erhvervsakademi
Opgaver Lav CPR-opgaven FEN Nordjyllands Erhvervsakademi

19 Forbindelser mellem objekter
Objekter knyttes sammen via objekt-forbindelser (Associering og aggregering) Fx vil et objekt af typen Person kunne være knyttet til et objekt af typen CPR Et andet eksempel kunne være objekterne Kunde og Konto FEN Nordjyllands Erhvervsakademi

20 Nordjyllands Erhvervsakademi
Kardinalitet Et mål for hvor mange objekter af en given type et objekt har knyttet til sig. Fx har et Person-objekt knyttet 1 og kun 1 CPR-objekt til sig Et Kunde-objekt kan derimod have flere Konto-objekter tilknyttet FEN Nordjyllands Erhvervsakademi

21 Nordjyllands Erhvervsakademi
Mere kardinalitet Man taler om tre forskellige typer: 1-1 (en til en) 1-* (en til mange) *-* (mange til mange) FEN Nordjyllands Erhvervsakademi

22 Realisering af objektforbindelser: 1-1
Det ene objekt har en reference til det andet Skal Person have reference til CPR, eller omvendt? Dette afhænger af systemets forretnings-logik – hvilken vej går vi typisk i systemet fra Person til CPR eller omvendt FEN Nordjyllands Erhvervsakademi

23 Nordjyllands Erhvervsakademi
1-* Her afhænger det igen af forretningslogik: Skal vi have en reference fra 1 til mange siden, skal vi realisere dette vha. Array, ArrayList eller anden collection Skal vi referere 1-siden fra mange-siden kan det gøres med en enkelt reference FEN Nordjyllands Erhvervsakademi

24 Nordjyllands Erhvervsakademi
*-* Som tidligere, blot vi her er tvunget til at have en collection i det ene objekt Ex. Låner-Bog: En låner kan reservere mange bøger, men en bog kan også være reserveret af mange lånere FEN Nordjyllands Erhvervsakademi

25 Nordjyllands Erhvervsakademi
Eksempler Se PersonCpr og KundeKonto FEN Nordjyllands Erhvervsakademi

26 Nordjyllands Erhvervsakademi
Array Arrays er reference-typer baseret på Array-klassen i FCL oprettes med new 0-baseret indeksering tildeles default værdier (0 ved numerisk, null ved referencer) int[] a; a = new int[5]; a[0] = 17; a[1] = 32; int x = a[0] + a[1] + a[4]; int l = a.Length; opret Tilgang til element antal elementer FEN Nordjyllands Erhvervsakademi

27 Nordjyllands Erhvervsakademi
ArrayList FCL-klasse der som arrayet gemmer en sekvens af elementer – størrelsen er dog dynamisk Manipuleres vha. en række metoder: int Add (object value); void Insert(int index, object value); void Remove (object value); void RemoveAt(int index); void Clear (); bool Contains(object value); int IndexOf (object value); object this[int index] { get; set; } bool IsReadOnly { get; } bool IsFixedSize { get; } Tilføj nye elementer Slet Test på indhold Get/set eksisterende elementer Strukturelle properties FEN Nordjyllands Erhvervsakademi

28 ArrayList og List<>
Her ligger ArrayList using System.Collections; //--- Ansat a = new Ansat("Kurt", "Seniorprogrammør", 20000); Ansat b = new Ansat("Karl", "Programmør", 10000); Ansat c = new Ansat("Karen", "Systemprogrammør", 13000); Ansat d = new Ansat("Iben", "Programmør", 11000); Ansat e = new Ansat("Ib", "Systemkonsulent", 9000); ArrayList ansatListe = new ArrayList(); ansatListe.Add(a); ansatListe.Add(b); ansatListe.Add(c); ansatListe.Add(d); for (int i = 0; i < ansatListe.Count; i++) { Console.WriteLine(((Ansat)ansatListe[i]).Navn); } ArrayList kan indeholde alle slags objekter… …derfor må vi eksplicit caste til Ansat FEN Nordjyllands Erhvervsakademi

29 ArrayList og List<>
Her ligger List<-> using System.Collections.Generic; //--- Ansat a = new Ansat("Kurt", "Seniorprogrammør", 20000); Ansat b = new Ansat("Karl", "Programmør", 10000); Ansat c = new Ansat("Karen", "Systemprogrammør", 13000); Ansat d = new Ansat("Iben", "Programmør", 11000); Ansat e = new Ansat("Ib", "Systemkonsulent", 9000); List<Ansat> ansatListe = new List<Ansat>(); ansatListe.Add(a); ansatListe.Add(b); ansatListe.Add(c); ansatListe.Add(d); for (int i = 0; i < ansatListe.Count; i++) { Console.WriteLine(ansatListe[i].Navn); } List<Ansat> kan kun indeholde Ansat-objekter… …derfor behøver vi ikke at caste FEN Nordjyllands Erhvervsakademi

30 Eksempel: Ansat-Projekt
Del af design-klassediagram i et system til registrering af ansatte og projekter Projekt Ansat navn navn ArbejderPaa afdeling stilling timer løn 1 1 0..* 0..* 0..* 0..* 1 1 GetTotalTimer() TilknyMedarbejder() GetMedarbejdere() FEN Nordjyllands Erhvervsakademi

31 Design af objektforbindelser
Muligheder: Ansat indeholder en liste af ArbejderPaa referencer Projekt indeholder en liste af ArbejderPaa referencer ArbejderPaa indeholder referencer til Ansat og Projekt Kombinationer af ovenstående Vi vælger 2 plus 3. VisualStudio-løsning – source her. FEN Nordjyllands Erhvervsakademi

32 Nordjyllands Erhvervsakademi
Opgaver Lav opgaverne om realisering af objektforbindelser (Bibliotek) FEN Nordjyllands Erhvervsakademi


Download ppt "Programmeringsteknologi: Lektion 1"

Lignende præsentationer


Annoncer fra Google