Programmering i C# 5. Structer.

Slides:



Advertisements
Liknande presentationer
Mall för ett C#-program
Advertisements

Interface.  Interface är en datatyp och har alltså egen syntax och en hel del egna regler för vad arv från interface innebär.  Interface är renodlad.
Avlusning Debugger (”avlusare”) Breakpoints Watch.
Fortsättningskurs i Programmering lektion 6
OOP Objekt-orienterad programmering
Arv.
Abstract & sealed.
Polymorfism.
Metoder.
Programmeringsteknik för K och Media
1 Föreläsning 6 Klass Object, instans av klass public/private Klassvariabler och klassmetoder.
Alice in Action with Java
Sid period2CD5250 OOP med C++ Mats Medin MDH/IDT Objektbaserad programmering –Grundläggande om klasser och objekt – (Arv får vänta)  Iden med klasser.
Sid period2CD5250 OOP med C++ Mats Medin MDH/IDT Konstruktor Ser till att objektets data är korrekt initierade MinKlass::MinKlass(); MinKlass::MinKlass(int.
Programmering i C# 2. Inledande detaljer.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser och instansvariabler -Tabeller av klassobjekt.
Föreläsning 11 Arrayer.
Objektorienterad programmering i Java
Programmering i C# 3. Klasser.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 6 ( ) INNEHÅLL: -Mera om tabeller.
Pekare och speciell programstruktur i inbyggda system
Sid 41 Fordon int antalhjul; int vikt;
int res2=Math.max(tal1,tal2);
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
4. Arv och dynamisk bindning
Föreläsning 8, kapitel 8 Förbättra strukturen med arv Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael.
Vektorer (klassen Vector) Sortering
Polymorfism.
Programmering i C# 10. Klassbiblioteket.
Mer om arv - Polymorfism Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar
Räckvidd och synlighet. Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 22 Synlighet (meddelandesändning) Det.
Arv.
Programmeringsteknik för Media1 & K1
1. En infrastruktur för programutveckling
Föreläsning 8 Arv och abstrakta klasser. Arv Definierar en klass utifrån en redan existerande klass Den nya klassen utökar den ärvda klassen ( extends.
Arrayer och strängar Arrayer Strängar operatorer typkonvertering.
Riktade listor i C och Java Lösning till gruppövning 1.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
Föreläsning 10 Stränghantering.
Introduktion till klasser, objekt och BlueJ Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling.
Programmering i C# 9. Pekare och osäker kod.
Föreläsning 9 Gränssnitt. Super Super kan användas till anrop av en omdefinierad metod Super kan användas till anrop av konstruktorer i superklassen Super.
Föreläsning 12 Om slutprovet. Repetition –deklaration av variabler –skapande av objekt (instansiering) –Vektorer och Vector-klassen –Klasser –Instans-/klassvariabler.
Föreläsning 4 Klasser Och Objekt.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 2: Variabler och datatyper Variabler Bindning Typkontroll Några viktiga datatyper.
ITK:P1 Föreläsning 2 Introduktion till objektorientering DSV Marie Olsson.
INTRODUKTION TILL PROGRAMMERING
Objektorienterad programmering
Arv repetition Arv = Är relation Tillgänglighet public, protected och private. Överklass ös Direkt härledd underklass dhu: Class dhu : public ös{} Indirekt.
7. Delegerare och notifierare
Föreläsning 17 Repetition. Källkodsformat Unicode används åäöμψζ tillåtna i namn på identifierare Inte alla miljöer klarar av det Källkod Bytekod Java.
Lennart Edblom & Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 2: Variabler och datatyper Variabler Bindning Typkontroll Några viktiga datatyper.
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
Programmeringsteknik för K och Media
OOP - teori1 OOP del II– Föreläsning 5 vecka 6. OOP - teori2 Klasser Substantiv i singularis stavat med stor bokstav till exempel Human Dog Account Circle.
1 Föreläsning 6 Repetition på metoder Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
OOP&M - teori1 OOP del II– Föreläsning 2 vecka 46 Konstruktorer Instansmetoder Kapitel 14 i kursboken.
Malmö högskola Rolf Axelsson 2003/2004 DA7231, 4 poäng Referensvariabel Klass och konstruktorer Klass med set- och get-metoder Klass och fält Fler metoder.
Överlagring av operatorer, friends, user-defined conversions, klassmallar sid. 1 6/29/2015 CD5250 OOP med C++ Mats Medin MDH/IDT Överlagring av operatorer.
Objektbaserad programmering sid. 1 6/30/2015CD5250 OOP med C++ Mats Medin MDH/IDT Objektbaserad programmering –Grundläggande om klasser och objekt – (Arv.
Arv, abstrakta klasser och gränssnitt
OOP&M - teori1 OOPM del II– Föreläsning vecka Mer om ärvning.. Abstrakta klasser/metoder Gränssnitt/Interface klasser.
OOP&M - teori1 OOPM del II – Föreläsning vecka Abstrakta klasser/metoder igen Gränssnitt/Interface klasser igen tillämpat.
Objektorienterad programmering sid. 1 7/15/2015 CD5250 OOP med C++ Mats Medin MDH/IDT Objektorienterad programmering OOP = objektbaserad programmering.
Föreläsning 3 Väsentliga delar i ett Javaprogram Input i paketet extra
TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder.
TDP004 Objektorienterad Programmering Fö 5 Minneshantering.
TDP004 Objektorienterad Programmering Fö 6 Objektorientering forts.
TDP004 Objektorienterad Programmering Fö 8 Sammanfattning
Objektorienterad programmering forts
Presentationens avskrift:

Programmering i C# 5. Structer

Typkategorier Värdetyper Referenstyper Struct Enum Referenstyper Klass Delegerare Interface Typomvandling struct till klass: boxing Programmering i C# - Kapitel 5

5.1 Skillnader mot klass Struct har defaultkonstruktor Sätter alla medlemmar till noll Kan ej omdefinieras Structobjekt kan skapas utan konstruktoranrop Bättre prestanda än klasskonstruktion Ytterligare konstruktorer kan finnas Programmering i C# - Kapitel 5

Konstruktor Skapas ändå på stack Anses därmed initierade int obj = new int(); // eller: Int32 obj = new Int32(); Skapas ändå på stack Viss inkonsekvens i new Anses därmed initierade Kan användas utan tilldelning Programmering i C# - Kapitel 5

Egendefinierad struct struct Point { public int x, y; public Point(int x, int y) { this.x = x; this.y = y; } } OK göra fält public Programmering i C# - Kapitel 5

Specialregler för struct Defaultkonstruktorn försvinner inte då egna konstruktorer läggs till Explicit initiering av fält får ej ske Destruktor kan ej finnas Arv finns inte Varken till eller från struct Medlem kan ej vara protected Interface kan implementeras Programmering i C# - Kapitel 5

ValueType Alla structer ärver implicit ValueType Omdefinierar Equals Härledd från Object Omdefinierar Equals Alla structers Equals ger utan omdefinition jämförelse av tillstånd == och != är inte överlagrade för egna structer Men är det i klassbibliotekets structer Kan lätt göras med anrop till Equals Programmering i C# - Kapitel 5

5.2 Enum Klass härledd från ValueType heter Enum Struct härledd från Enum skapas i C# med nyckelordet enum Trots att structer inte kan ärva! Ger objekt som kan tilldelas namngivna värden – namngivna tillstånd Ger tydligare kod än exempelvis ett heltal vars värden har symbolisk betydelse Programmering i C# - Kapitel 5

Enum exempel Värdena är explicit typomvandlingsbara till/från int enum MyEnum {First, Second, Third}; MyEnum e = MyEnum.First; e = MyEnum.Second; if (e == MyEnum.Second) ... MyEnum.Second = MyEnum.Third; // Fel! Värdena är explicit typomvandlingsbara till/från int Även annan underliggande typ kan anges Underliggande typens operatorer gäller Programmering i C# - Kapitel 5

5.3 Boxing Klasser och structer har gemensam basklass i Object Objectreferens bör kunna referera till structobjekt! Trots olika semantik i klass/structnamn int x = 5; object obj = x; // vad tilldelas? Programmering i C# - Kapitel 5

Boxing forts. Implicit typomvandling från struct till objectreferens genom att ett nytt klassobjekt med samma innehåll som structen skapas och referensen tilldelas det nya objektet Objekt av odefinierad klass, på heap Referensen kan explicit typomvandlas tillbaka till den boxade typen Programmering i C# - Kapitel 5

Boxing exempel Funktionen får referens till ett boxat objekt void func(object obj) { // gör något med obj, och anroparens objekt ändras if (obj is MyClass) ... } … int x = 5; func(x); Funktionen får referens till ett boxat objekt Värdeanrop! Programmering i C# - Kapitel 5