Object-Orienteret Programmering og Design. 2 Nordjyllands Erhvervakademi – 2009 Indhold “Classes, objects and object-oriented programming (OOP) play a.

Slides:



Advertisements
Lignende præsentationer
Hjemmesidekonstruktion Tjekspørgsmål 1.Hvad er et markup-sprog – hvad bruges det til? 2.Hvad er forskellen mellem et markup-sprog og et scriptsprog? 3.Hvad.
Advertisements

Velkommen til Softwarekonstruktion
07 – Kort om OO Introduktion.
T1 – OPGAVE 14.2 LINETT & SABRINA Klasse Varer namespace Opgave_14._2 { class Varer { private string vare; private string farve; private double.
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
C#: Udtryk og metoder. Indhold “With regards to programming statements and methods, C# offers what you would come to expect from a modern OOPL…” Udtryk.
Distribueret programmering, specielt.NET Remoting Rasmus D. Lehrmann DM
Selve objektet versus referencen til objektet Nedarvning
DotNET Remoting Præsentation. Beskrivelse af arkitekturen i et dot NET program. Hvad er en Proxy. Klient, server og host begreberne. Marshaling. Eventuelt.
Objektorienteret programmering
08 – Mere OO Indkapsling Arv og polymorfi (OOP’s 3 hovedprincipper)
09 – Arv og polymorfi i java
Hvordan man skriver koden.
01 – Java platform for starters. 2 NOEA2009Java-kursus – Java Platform Introduktion til Java Baggrund Hvad er Java? Faciliteter i Java.
VOOP, 8 april Refleksion i objekt orienterede programmeringssprog Mandag 8/ Kasper Østerbye.
Structs Structs allokeres på stakken Memory-allokering sker ved oprettelse af variabel og ikke ved new Der kan defineres metoder incl. Constructor. Eksempel.
Masterpages/Otto Knudsen 1 Master Pages Master Pages i ASP.NET 2.0.
Introduktion/Otto Knudsen 1 Overblik WebForms ASP.NET.
Introduktion til Access (Access, del 1)
Object-Orienteret Programmering og Design Kilde: Joe Hummel.
18 – Java Server Faces. 2 NOEA2009Java-kursus – JSF 2 Web-applikationer - 1 Brugere interagerer med en Web-browser Browseren sender forespørgsler til.
Forelæsning 3.1 Collections Javas for-each løkke
Items 4, 14, 24, 34, 44, 54 Orange gruppe Liv, Jonas, Thorkil, Søren S og Martin D.
Lektion 7 Læsestof: Kopier fra Caranno
Fundamentale datastrukturer
Mønstre En lille introduktion. Singleton Tilgå et objekt igennem klassereference i stedet for objektreference.  Overflødiggør referencer til objektet.
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.
GP7, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 7 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi begynder.
8 RÅD VEDRØRENDE GOD PROGRAMMERING Effective (brown) Java.
FEN IntroJava AAU1 Klasser og objekter Grundbegreber Student-Course.
FEN IntroJava AAU1 Endnu mere om Klasser og Objekter Mange til mange relationer Student-Course v3.
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.
C#: Data Typer. 2 Nordjyllands Erhvervakademi Indhold: “.NET is designed around the CTS, or Common Type System. The CTS is what allows assemblies,
9. Interfaces. 2 Nordjyllands Erhvervakademi Objectives “Good class design starts with good application design — how many classes, do they relate.
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.
DAIMIIntroducerende objektorienteret programmering4B.1 Typer og tilstand i Java Typer, tilstand, erklæring, variable, primitive datatyper, reference- og.
Klasser og objekter. dIntProg, E08Klasser og objekter.2 Grundbegreber Klasser og objekter –beskrivelse –oprettelse Attributter og metoder –tilstand –opførsel.
 Jens Bennedsen, 2003Introducerende objektorienteret programmeringinterfaces.1 Interfaces En ren kontrakt.
DAIMIIntroducerende objektorienteret programmering4B.1 Grundlæggende og Reference Typer i Java Typer, tilstand, erklæring, reference- og værdi semantik,
Klassehierarkier Specialisering vha. subklasser. dIntProg, E05Klassehierarkier.2 Oversigt Eksempler på specialisering –Aktør, Koreograf, Skuespiller,
Indledende Programmering Uge 6 - Efterår 2006
Interfaces Afkobling af programkomponenter (eksempel: Comparable)
Polymorfi Abstrakte klasser, substitutionsprincippet, statisk og dynamisk type.
Objekt-relationel DBMS1 4.5 The Object-Relational Model 9.4 User-Defined Types in SQL 9.5 Operations on Object-Relational Data Ullman: Object-Relational.
Klasser og objekter – grundbegreber.  Michael E. Caspersen, 2001Introducerende objektorienteret programmeringKlasser og objekter.2 Klasser og objekter.
 Jens Bennedsen 2001Multimedie programmering10B.1 Interfaces En ren kontrakt.
 Jens Bennedsen 2001Multimedie programmering4.1 Definition af begreber Interface, implements, klasse.
Klasser og objekter. dIntProg, F08Klasser og objekter.2 Grundbegreber Klasser og objekter –beskrivelse –oprettelse Attributter og metoder –tilstand –opførsel.
Jesper Mosegaard Multimedie Programmering E2003 MMProg uge44 Java til Lingo Klasser, statements og lister.
DAIMIIntroducerende Objektorienteret Programmering8B.1 Interfaces En ren kontrakt.
Eksamen Praktisk prøve.
Objecter Introduktion Webintegrator HF1 PHP Object orienteret.
WebApi service x.
Klasser og objekter (Afsnit i manualen).
Simpel test-client (javascript) Session og Application data
1A – FORÅR 2017.
Præsentationens transcript:

Object-Orienteret Programmering og Design

2 Nordjyllands Erhvervakademi – 2009 Indhold “Classes, objects and object-oriented programming (OOP) play a fundamental role in.NET. C# features full support for the object- oriented programming paradigm…” Designe dine egne klasser Nedlægge objekter og garbage collection Arv

3 Nordjyllands Erhvervakademi – 2009 Del 1 Designe dine egne klasser…

4 Nordjyllands Erhvervakademi – 2009 Motivation.NET indeholder tusindvis af forprogrammerede klasser i FCL Så hvorfor lave dine egne? –for at modelere entiteter der er unikke for dit domæne… Eksempler: –ansatte –kunder –produkter –ordrer –dokumenter –etc.

5 Nordjyllands Erhvervakademi – 2009 Simple class members C# understøtter standard fields (attributer), metoder og konstruktører –med standard tilgang: public, private, protected public class Person { public string Name; // fields public int Age; public Person() // default constructor { this.Name = "?"; this.Age = -1; } public Person(string name, int age) // parameterized ctor { this.Name = name; this.Age = age; }// ctor = konstruktør public override string ToString() // method { return this.Name; } }//class

6 Nordjyllands Erhvervakademi – 2009 Grundlæggende design regler Tilbyd konstruktør(er) Undlad default konstruktør for parameteriseret initialisation Overskriv ToString og Equals Data hiding: “Gem så mange detaljer som du kan" –Giv tilgang via accessors og mutators (get/set metoder) –.NET tilbyder en renere mekanisme via properties…

7 Nordjyllands Erhvervakademi – 2009 Properties Mål: –At give brugeren af klassen mulighed for sikkert at skrive som kode som dette –provides field-like access with method-like semantics… –… giver styring af tilgang, validering, data persistence, screen opdatering, etc. Person p; p = new Person("joe hummel", 40) p.Age = p.Age + 1;

8 Nordjyllands Erhvervakademi – 2009 Observation Aflæs værdi ("Get") vs. tildel værdi ("Set") Person p; p = new Person("joe hummel", 40) p.Age = p.Age + 1; Get age Set age

9 Nordjyllands Erhvervakademi – 2009 Property implementation Implementation options: –read-only –write-only –read-write public class Person { private string m_Name; private int m_Age;. public string Name { get {... } } public int Age { get {... } set {... } } } read-only read-write

10 Nordjyllands Erhvervakademi – 2009 Eksempel Simpel implementation bare læser / skriver attributten: public class Person { private string m_Name; private int m_Age;. public string Name // Name property { get { return this.m_Name; } } public int Age // Age property { get { return this.m_Age; } set { this.m_Age = value; } }

11 Nordjyllands Erhvervakademi – 2009 Parameter overførsel C# tilbyder 3 muligheder: –pass-by-value (default) –pass-by-reference –copy-out

12 Nordjyllands Erhvervakademi – 2009 Pass-by-value Parameteroverførsel med Pass by value er default –data kopieres til metoden –Ændringer i parameteren indenfor metoder har kun betydning for den lokale kopi value parameter void F(int x) { x = 0; } int y = 9; F(y); y uændret

13 Nordjyllands Erhvervakademi – 2009 Pass-by-reference ref parameter overfører data ind og ud –brug keyword ref ved både erklæring og kald –skal bruge en variabel som parameter, altså ikke f.eks tallet 9 –variablen skal være initialiseret inden kaldet ref parameter, initieret til 9 void G(ref int x) { x += 1; } int y = 9; G(ref y); y sat til 10

14 Nordjyllands Erhvervakademi – 2009 Copy-out out parameter returnerer data gennem en parameter –brug keyword out ved både erklæring og kald –skal bruge en variabel som parameter, altså ikke f.eks tallet 9 –parameteren skal tildeles en værdi i metoden ellers fås compiler fejl out parameter void H(out int x) { x = 0; } int y; H(out y); y set to 0 assignment required

15 Nordjyllands Erhvervakademi – 2009 Del 2 Nedlæg objekter og garbage collection…

16 Nordjyllands Erhvervakademi – 2009 Objekt oprettelse og nedlæggelse Objekter er explicit oprettet via new Objekter er aldrig nedlagt explicit! –.NET bruger garbage collection til at nedlægge objekter –garbage collector kører på uforsigelige tidspunkter…

17 Nordjyllands Erhvervakademi – 2009 Finalization Objekter kan blive notificeret når de bliver garbage collected Garbage collector (GC) kalder objektets finalizer public class Person {. ~Person() // finalizer {... }

18 Nordjyllands Erhvervakademi – 2009 Kan du stole på finalization? Nej! –Det er uforudsigeligt –Det er dyrt (.NET lægger objektet i en speciel kø, etc.) Alternativer? –design klasser så finalization er unødvendig –tilbyd Close / Dispose metoder som brugeren af klassen kan kalde ** Warning ** As a.NET programmer, you are responsible for calling Dispose / Close. Rule of thumb: if you call Open, you need to call Close / Dispose for correct execution. Common examples are file I/O, database I/O, and XML processing.

19 Nordjyllands Erhvervakademi – 2009 Del 3 Arv…

20 Nordjyllands Erhvervakademi – 2009 Arv bruges når en afledt klasse “er-en” basisklasse giver mulighed for kodegenbrug –giver genbrug af design & polymorfisk programmering Eksemple: –en Student er-en Person Undergraduate Person StudentEmployee GraduateStaffFaculty

21 Nordjyllands Erhvervakademi – 2009 Implementation C# understøtter single arv - både statisk og dynamisk binding –base keyword giver dig adgang til basisklassens medlemmer public class Student : Person { private int m_ID; public Student(string name, int age, int id) // constructor :base(name, age) { this.m_ID = id; } Student Person

22 Nordjyllands Erhvervakademi – 2009 C#’s understøttelse af arv Hvis man ikke gør noget kaldes default konstruktøren i superklassen automatisk før subklassens konstruktør Anbefaling: Implementer subklassens konstruktør så den explicit kalder en passende kontruktør i superklassen // This time, use the C# "base" keyword to call a custom // constructor on the base class. public Manager(string fullName, ulong numbOfOpts): base(fullName) { numberOfOptions = numbOfOpts; }

23 Nordjyllands Erhvervakademi – 2009 C#’s understøttelse af polymorfi virtual og override keywords: Hvis en metode i superklassen skal kunne overskrives i en subklassen, skal den specifiseres som virtual: –Employee : public virtual void GiveBonus(float amount){... } Når en subklasse overskriver en virtual metode skal den specifiseres med override –Manager : public override void GiveBonus(float amount){... }

24 Nordjyllands Erhvervakademi – 2009 C#’s understøttelse af polymorfi Abstrakte klasser: –abstract public class Employee{...} Abstrakte metoder: En klasse som er defineret som abstrakt kan definere et antal abstrakte metoder. Abstrakte metoder kan benyttes når man vil definere en metode som ikke har en default implementation –Employee : public abstract void GiveBonus(float amount);

25 Nordjyllands Erhvervakademi – 2009.NET gør kraftig brug af arv Eksempler: –alle typer arver fra klassen System.Object –implementation af WinForms

26 Nordjyllands Erhvervakademi – 2009 Example #1: System.Object

27 Nordjyllands Erhvervakademi – 2009 Example #2: WinForms System.Windows.Forms namespace Object MarshalByObjectRef Component Control ScrollableControl ContainerControl Form Form1 Button CheckBox TextBoxBase TextBox RichTextBox System namespace System.ComponentModel namespace Your custom form classes inherit implementation details from many different classes up the inheritance hierarchy ButtonBase

28 Nordjyllands Erhvervakademi – 2009 Opsummering C# er et fuldt objekt-orienteret programmeringssprog –fields, properties, methods, constructors, overloading –garbage collection –single inheritance