1 / 32

Programmeringsteknologi: Lektion 1

Programmeringsteknologi: Lektion 1. Præsentation Orientering om: praktiske forhold faget Fundament: C# fra Softwarekonstruktion?. Præsentation. Kursusholdere: Finn E. Nordbjerg – fen@noea.dk Lektor v/Datamatikeruddannelsen, NOEA - Nordjyllands Erhvervsakademi

blanca
Download Presentation

Programmeringsteknologi: Lektion 1

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. Programmeringsteknologi: Lektion 1 Præsentation Orientering om: praktiske forhold faget Fundament: C# fra Softwarekonstruktion? Nordjyllands Erhvervsakademi

  2. Præsentation • Kursusholdere: • Finn E. Nordbjerg – fen@noea.dk • 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 – jh@noe.dk • Og jer? • mailliste Nordjyllands Erhvervsakademi

  3. Praktisk • Planlægning • Bøger • Software • Logins • Mail • http://public.noea.dk/programmeringsteknologi/ • Eksamen Nordjyllands Erhvervsakademi

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

  5. Definition af objekt og klasse • Objekt • 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. Nordjyllands Erhvervsakademi

  6. 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 Nordjyllands Erhvervsakademi

  7. 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. Nordjyllands Erhvervsakademi

  8. 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 Nordjyllands Erhvervsakademi

  9. 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 Nordjyllands Erhvervsakademi

  10. Opbygning af klasser Klasser bygges op efter skabelonen: classKlassenavn { dataerklæringer constructors metoder } 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 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; } Nordjyllands Erhvervsakademi

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

  14. 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. 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 Nordjyllands Erhvervsakademi

  16. 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 Nordjyllands Erhvervsakademi

  17. 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 Nordjyllands Erhvervsakademi

  18. Opgaver • Lav CPR-opgaven 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 Nordjyllands Erhvervsakademi

  20. 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 Nordjyllands Erhvervsakademi

  21. Mere kardinalitet • Man taler om tre forskellige typer: • 1-1 (en til en) • 1-* (en til mange) • *-* (mange til mange) 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 Nordjyllands Erhvervsakademi

  23. 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 Nordjyllands Erhvervsakademi

  24. *-* • 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 Nordjyllands Erhvervsakademi

  25. Eksempler • Se PersonCpr og KundeKonto Nordjyllands Erhvervsakademi

  26. 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 Nordjyllands Erhvervsakademi

  27. 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 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 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 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 1 1 løn 0..* 0..* 0..* 0..* 1 1 GetTotalTimer() TilknyMedarbejder() GetMedarbejdere() 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. Nordjyllands Erhvervsakademi

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

More Related