Programmeringsteknologi: Lektion 1

Slides:



Advertisements
Lignende præsentationer
Hvordan programmerer man?? STREAM - en model. Programmører arbejder ofte i teams Hver programmør arbejder på sin del af en større helhed.
Advertisements

Velkommen til Softwarekonstruktion
07 – Kort om OO Introduktion.
FEN IntroJava AAU1 Introduktion til Java programmering Kursusintroduktion Introduktion til programmering Java og BlueJ.
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”)
Indledende Programmering Uge 2 - Efterår 2006 Selektioner og interaktion mellem objekter Susanne Brix Lindros.
KONCEPT Klasser og objekter En klasse beskriver et World ArrayList
Datastrukturer og Collections Oversigt og forskel imellem Jave og.net Collections library Collection interfaces ArrayList IList interface Hashtable Hashtable.
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
Informationsteknologi B-A, HHX, 2005,
Objekter og klasser Applikationsdesign Code Namespace Value og reference typer Reference type Rasmus D. Lehrmann1.
Objektorienteret programmering
08 – Mere OO Indkapsling Arv og polymorfi (OOP’s 3 hovedprincipper)
Hvordan man skriver koden.
Tietgen Skolen Trick med facadeklasse og serialisering ”Trick” – model ”samles” til eet overordnet objekt Alle klasser i model skal have attriutten [Serializable]
Masterpages/Otto Knudsen 1 Master Pages Master Pages i ASP.NET 2.0.
Introduktion til Access (Access, del 1)
FEN Diskret matematik/Seminar 11 Diplomuddannelsen i Softwarekonstruktion (Master-brobygning) Fagpakke: Formelle modeller for programmering Diskret.
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 Java grundelementer Variable og datatyper Sætninger og udtryk Metoder.
NOEA/IT - FEN1 Typeparametisering/Genericity Generics i.NET 2 og C#
Delphi og C++ Builder C++ Referencer og pointere.
FEN NOEA/IT Programmeringsteknologi 1 Arv og polymorfi Substitutionsprincippet Abstrakte klasser Design Patterns (Composite)
Forelæsning 3.1 Collections Javas for-each løkke
Rapporter (Access, del 5). RHS – Informationsteknologi – Udgangspunkt Vi har oprettet en database Vi har defineret en eller flere tabeller, og.
Lektion 7 Læsestof: Kopier fra Caranno
Fundamentale datastrukturer
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.
Objekter og klasser Rasmus D. Lehrmann DM
Introduktion til Access (Access, del 1). RHS – Informationsteknologi – Fra design til udvikling Vi ved nu, hvordan vi finder et design for en database,
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
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.
2009Softwarekonstruktion / DB-design 11 Databasedesign 1 Fra begrebsmæssig model til relationel model.
9. Interfaces. 2 Nordjyllands Erhvervakademi Objectives “Good class design starts with good application design — how many classes, do they relate.
Begreber og Redskaber 11. Plan for idag Lidt afrunding: Collections Framework i Java Noget om oversættere og sprog Evaluering Sidste gang øvelser før.
Forelæsning 7.1 – repetition
FEN NOEA - Nordjyllands Erhvervsakademi1 Objektorienteret programmering Indkapsling Arv og polymorfi (OOP’s 3 hovedprincipper)
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.
Objektorienteret programmering – UML2Java.  Jens Bennedsen 2001Multimedie programmering8.2 Indhold Klasser og associering til enkelt objekt –Programmering.
 Jens Bennedsen 2002Objektorienteret systemudvikling Design klasse model ”Klassemodellen på vej til kode”
Introduktion til programmering Repetition - ArrayList.
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
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:

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

Nordjyllands Erhvervsakademi 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 FEN 2008-09-03 Nordjyllands Erhvervsakademi

Nordjyllands Erhvervsakademi Praktisk Planlægning Bøger Software Logins Mail http://public.noea.dk/programmeringsteknologi/ Eksamen FEN 2008-09-03 Nordjyllands Erhvervsakademi

Introduktion til objektorienteret programmering Objekter og klasser - indhold og opbygning FEN 2008-09-03 Nordjyllands Erhvervsakademi

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 2008-09-03 Nordjyllands Erhvervsakademi

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 2008-09-03 Nordjyllands Erhvervsakademi

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 2008-09-03 Nordjyllands Erhvervsakademi

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 2008-09-03 Nordjyllands Erhvervsakademi

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 2008-09-03 Nordjyllands Erhvervsakademi

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

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 2008-09-03 Nordjyllands Erhvervsakademi

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 2008-09-03 Nordjyllands Erhvervsakademi

Nordjyllands Erhvervsakademi Metoder public bool Haev(double belob) public void Indsaet(double belob) public void TilskrivRente() FEN 2008-09-03 Nordjyllands Erhvervsakademi

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 2008-09-03 Nordjyllands Erhvervsakademi

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 2008-09-03 Nordjyllands Erhvervsakademi

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 2008-09-03 Nordjyllands Erhvervsakademi

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 2008-09-03 Nordjyllands Erhvervsakademi

Nordjyllands Erhvervsakademi Opgaver Lav CPR-opgaven FEN 2008-09-03 Nordjyllands Erhvervsakademi

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 2008-09-03 Nordjyllands Erhvervsakademi

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 2008-09-03 Nordjyllands Erhvervsakademi

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

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 2008-09-03 Nordjyllands Erhvervsakademi

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 2008-09-03 Nordjyllands Erhvervsakademi

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 2008-09-03 Nordjyllands Erhvervsakademi

Nordjyllands Erhvervsakademi Eksempler Se PersonCpr og KundeKonto FEN 2008-09-03 Nordjyllands Erhvervsakademi

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 2008-09-03 Nordjyllands Erhvervsakademi

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 2008-09-03 Nordjyllands Erhvervsakademi

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 2008-09-03 Nordjyllands Erhvervsakademi

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 2008-09-03 Nordjyllands Erhvervsakademi

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 2008-09-03 Nordjyllands Erhvervsakademi

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 2008-09-03 Nordjyllands Erhvervsakademi

Nordjyllands Erhvervsakademi Opgaver Lav opgaverne om realisering af objektforbindelser (Bibliotek) FEN 2008-09-03 Nordjyllands Erhvervsakademi