Object-Orienteret Programmering og Design Kilde: Joe Hummel.

Slides:



Advertisements
Lignende præsentationer
SPBG.  Test driven development  Unit test frameworks  MOSS TDD  Mocking  Design patterns.
Advertisements

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.
Velkommen til Softwarekonstruktion
C# introduktion. using System; Namespace MyFirst { class eks1 { public static void Main() { Console.WriteLine("Hej!"); Console.Write("Skriv dit navn her:
1 GUI Programmering i.NET WinForms. Mål “.NET supports two types of form-based apps, WinForms and WebForms. WinForms are the traditional, desktop GUI.
Dagens program  Emne: Tim Berners-Lees WWW koncept og deraf følgende innovationer Forbered hver for sig Præsenter og diskutér i grupper Fremlæggelse med.
Introduktion til sikkerhed i.NET Mark S. Rasmussen iPaper ApS Part 2.
Februar 2005Sprog-nyheder i C# og VB1 Captator Tlf: Henrik Lykke Nielsen Softwarearkitekt, Microsoft Regional Director for Denmark.
C#: Data Typer. Indhold: “.NET is designed around the CTS, or Common Type System. The CTS is what allows assemblies, written in different languages, to.
07 – Kort om OO Introduktion.
Distribueret programmering, specielt Web Services Rasmus D. Lehrmann DM
T1 – OPGAVE 14.2 LINETT & SABRINA Klasse Varer namespace Opgave_14._2 { class Varer { private string vare; private string farve; private double.
Forside Titel Navn, sted eller begivenhed, dato. CHALLENGES FOR THE BANKING SECTOR - IN THE AFTERMATH OF THE CRISIS Louise C. Mogensen Deputy Chief Executive.
Tekst starter uden punktopstilling For at få punkt- opstilling på teksten, brug forøg indrykning For at få venstre- stillet tekst uden punktopstilling,
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”)
Arkitektur Embedded SQL Tema Persistens
Indledende Programmering Uge 2 - Efterår 2006 Selektioner og interaktion mellem objekter Susanne Brix Lindros.
Effective Java items Orange gruppe Thuy, Janne, Mads T.P., Oliver og Sebastian.
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.
Datastrukturer og Collections Oversigt og forskel imellem Jave og.net Collections library Collection interfaces ArrayList IList interface Hashtable Hashtable.
Modul 1 (B) Rød løber Tid: 30 minutter. Spilleregler for dagen.
06 – Java Packages Packages og ClassPath. 2 NOEA2009Java-kursus – Packages og class path Hvad er Packages? En package er en gruppering af relaterede typer.
Item gennemgang  Item: 01 – Static factory methods  Item: 09 – Override hashCode  Item: 17 – Design & document inheritence  Item: 25 – Lists over arrays.
Object-Orienteret Programmering og Design. 2 Nordjyllands Erhvervakademi – 2009 Indhold “Classes, objects and object-oriented programming (OOP) play a.
Collectionklasser Klassifikation og anvendelse. Collections Motivation –hvorfor bruge collections? Realisering af en-til-mange relationer –Importer, erklær,
Arne Winther Et værdifuldt samarbejde mellem hospital og produktudvikler.
View Procedures Trigger og Function Jesper Tørresø DAB1 E07 1. november 2007.
Database Normalization without Mathmatics
Objekter og klasser Applikationsdesign Code Namespace Value og reference typer Reference type Rasmus D. Lehrmann1.
Objektorienteret programmering
12 – GUI med Swing. 2 NOEA2009Java-kursus – GUI med Swing Designer view Komponenter Frame Properties Inspector.
09 – Arv og polymorfi i java
Hvordan man skriver koden.
Projektledelse IT-projektledelse (ITP) Projektledelse IT-projektledelse (ITP) Lektion september 2004 Peter Olaf Looms.
WCF service Hostet på website x. Opret tomt web applikations projekt.
Tråde og synkronisering. Tråde To typer tråde Dedikerede tråde -programmør opretter og tilknytter metode -”kører tråd-metoden (job) én gang” Tråd pulje.
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.
Distribution af funktionalitet Webservice med WCF x.
Distribution af funktionalitet Webservice med WCF x.
ASP.NET Custom Web Controls Deployment. Agenda – ASP.NET Web User Controls Composite Control Rendered Custom Control Deploy en Web Applikation.
Abstrakte klasser og interfaces i Java
Programering af mobile enheder Windows Phone Storage.
Agenda 1.Informationer 1.Excel i fb.m. projekt 2 2.Reserver tid til projekt 2 3.Øvelse: a / b = c 2.Opsamling fra sidst 3.Estimation (konfidensintervaller)
Begreber og Redskaber 9. Plan for idag I dag: Datastrukturer Tabeller Lister, mængder, maps, grafer Hægtede lister.
Session Når man hoster en WCF Service på ASP.NET website, kan man bruge ASP.NET’s Session.
Gruppe sort Morten, Peter, Jesper, Spencer & Støving.
Begreber og Redskaber 5. Collections i Java 1.2 Framework: samling af datastrukturer og algoritmer som generelt værktøj. En ramme til at arbejde med søgning.
Begreber og Redskaber 5. Plan for idag Overblik over klasser,objekter,nedarvning –Repetition fra Dat A/Indledende programmering –Centrale begreber om.
Globaliseringsredegørelsen 24.mar. 14 Figurer fra Danmark tiltrækker for få udenlandske investeringer i Sådan ligger landet
Grunde til at jeg elsker dig
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
Eksempel på realisering af domænemodel
Objekter og klasser Rasmus D. Lehrmann DM
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.
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.
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.
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.
Klasser og objekter. dIntProg, E08Klasser og objekter.2 Grundbegreber Klasser og objekter –beskrivelse –oprettelse Attributter og metoder –tilstand –opførsel.
Klasser og objekter. dIntProg, F08Klasser og objekter.2 Grundbegreber Klasser og objekter –beskrivelse –oprettelse Attributter og metoder –tilstand –opførsel.
Præsentationens transcript:

Object-Orienteret Programmering og Design Kilde: Joe Hummel

2 Nordjyllands Erhvervakademi 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 Del 1 Designe dine egne klasser…

4 Nordjyllands Erhvervakademi 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 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 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 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 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 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 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 Short way to write a read-write property Just declare the property and use {get; set;} The instance variable is implicit declared Cannot be used on read-only and write-only properties public class Person { private string m_Name;. public string Name { get {... } } public int Age { get; set; } } read-only read-write

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

13 Nordjyllands Erhvervakademi 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

14 Nordjyllands Erhvervakademi 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

15 Nordjyllands Erhvervakademi 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

16 Nordjyllands Erhvervakademi Del 2 Nedlæg objekter og garbage collection…

17 Nordjyllands Erhvervakademi 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…

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

19 Nordjyllands Erhvervakademi 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.

20 Nordjyllands Erhvervakademi Del 3 Arv…

21 Nordjyllands Erhvervakademi 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

22 Nordjyllands Erhvervakademi 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

23 Nordjyllands Erhvervakademi 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; }

24 Nordjyllands Erhvervakademi 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){... }

25 Nordjyllands Erhvervakademi 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);

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

27 Nordjyllands Erhvervakademi Example #1: System.Object

28 Nordjyllands Erhvervakademi 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

29 Nordjyllands Erhvervakademi Opsummering Object-orienteret programmering er paradigmet i.NET C# er et fuldt objekt-orienteret programmeringssprog –fields, properties, methods, constructors, overloading –garbage collection –single inheritance

30 Nordjyllands Erhvervakademi References Books: –T. Archer and A. Whitechapel, "Inside C#" (2 nd edition) –S. Lippman, "C# Primer" –J. Mayo, "C# Unleashed"