Klasser och objekt i C#



Relevanta dokument
Inledande programmering med C# (1DV402) Tärningarna ska kastas

Övningsuppgift. Repeterbara citat. Steg 2. Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402

"if"-satsen. Inledande programmering med C# (1DV402)

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

Metoder. Inledande programmering med C# (1DV402)

Föreläsning 5-6 Innehåll

Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här:

Inledande programmering med C# (1DV402) 27+15=42 1 (22)

Creative Commons. en guide för lärare

Java, klasser, objekt (Skansholm: Kapitel 2)

Statistik över heltal

Övningar Dag 2 En första klass

Inledande programmering med C# (1DV402) Introduktion till C#

Övningsuppgift. En array baklänges. Steg 1. Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402

Övningsuppgift. Bankkonton. Steg 2. Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402

Gissa det hemliga talet

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc

Inledande programmering med C# (1DV402) Ditt första C#-program med Visual Studio

TIMREDOVISNINGSSYSTEM

Inledande programmering med C# (1DV402) 85/2=42. OBS! Heltal 1 (13)

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Inledande programmering med C# (1DV402) 85%43=42. OBS! Heltal 1 (14)

Du ska nu skapa ett litet program som skriver ut Hello World.

Introduktion. Den objektorienterade modellen Grundläggande begrepp Klass Klassen som abstraktion

public och private Obs: private inte skyddar mot access från andra objekt i samma klass.

Hur du arbetar med VFU-portfölj i Mondo. en lathund för student

KLASSER. Inkapsling Abstrakt datatyp Public och private. Klassmedlemmar Datamedlemmar Exempel Funktionsmedlemmar

Distribuerade system. CORBA eller RMI

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

I STONE. I Variabler, datatyper, typkonvertering. I Logiska och matematiska uttryck. I Metoder-returvärde och parametrar. I Villkorssatser if/else

Räkna med C# Inledande programmering med C# (1DV402)

Föreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt

Laborationsanvisning. Digital väckarklocka. Steg 2, laborationsuppgift 2. Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402

Inledande programmering med C# (1DV402) Summera med while"-satsen

Enkät i gymnasiet Undersökning genomförd våren 2012 i åk 2

Inkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och private

Användarmanual Outlook-plugin Outlook-plugin för Mina meddelanden

Enkät i gymnasiet Undersökning genomförd våren 2012 i åk 2

Classes och Interfaces, Objects och References, Initialization

Klasser och objekt, referenser Grundkurs i programmering med Python

TIMREDOVISNINGSSYSTEM

Intyg om erfarenhet och lämplighet att undervisa som lärare i gymnasieskolan

Hjälp för digital röst. Mikro Værkstedet A/S

Frekvenstabell över tärningskast med C#

Idag: Dataabstraktion

Enkät i förskoleklass

Enkla variabler kontra referensvariabel

Mera om generik. Innehåll. Generik och arv Wildcards Vektorer och generik Generiska metoder. EDA690 (Mera om generik) HT / 24

Modeller, Objekt och Klasser

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

WEBBUTVECKLING Bilder

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 14

Ekvationssystem, Matriser och Eliminationsmetoden

Gissa det hemliga talet

Outline. Objektorienterad Programmering (TDDC77) Att instansiera en klass. Objekt. Instansiering. Åtkomst. Abstrakt datatyp.

ANVÄND NAVIGATIONEN I CAPITEX SÄLJSTÖD

Menys webbaserade kurser manual för kursdeltagare. Utbildningsplattform: Fronter

Lösningsförslag övning 2.

Design by. Manual Jossan.exe. Manual. till programmet. Jossan.exe. E-post:

Föräldrar i Skola24. Schema

Inledande programmering med C# (1DV402) Introduktion till programmering

Skriva B gammalt nationellt prov

PROGRAMMERING A VB6 UTVECKLINGSVERKTYGET VISUAL BASIC

Två konstiga klockor

Vi skall skriva uppsats

Visma Proceedo. Att attestera - Manual. Version 1.4. Version 1.4 /

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

Hur skapar man formula r

Objektorienterad Programmering (TDDC77)

Avsändare och mottagare

Efter att du har installerat ExyPlus Office med tillhörande kartpaket börjar du med att göra följande inställningar:

Träning i bevisföring

Användarvänlighet och tillgänglighet Workshop II

Objektorienterad Programmering (OOP) Murach s: kap 12-16

Bra att veta samt tips och trix i SiteVision 3

Visuell Identitet Logotype Logotype

4-3 Vinklar Namn: Inledning. Vad är en vinkel?

DOP-matematik Copyright Tord Persson. Bråktal Läs av vilka tal på tallinjen, som pilarna pekar på. Uppgift nr

NATIONELLA MATEMATIKTÄVLING

Detta dokument beskriver vilka regler som gäller för lagspecifika hemsidor använda av Ackers lag.

Information sid 2 4. Beställning sid 5. Ändring/Nytt SIM sid 6. Avsluta abonnemang sid 7. Fakturafråga sid 8. Felanmälan/fråga sid 9.

Instruktioner för beställning och kontoadministration för abonnenter av inlästa läromedel

Kort om klasser och objekt En introduktion till GUI-programmering i Java

Objekt, Klasser, Paket m. m.

Väga paket och jämföra priser

Gemensam byggprocess, GBP

Introduktion till arv

Vad är en webbläsare?

Sammanfattning på lättläst svenska

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Om att lära sig programmera. Föreläsning 1-2 Innehåll.

ELEV- HANDLEDNING (Ansökan via webben)

Distribuerade Informationssystem VT-04

Upplägg och genomförande - kurs D

Administration Excelimport

Jo, Den Talande Boken har så många möjligheter inbyggda, att den kan användas från förskoleklassen och ända upp på högstadiet.

Fält av referenser. Konstruktorerna används för att skapa Bilar och Trafikljus.

Objektorienterad programmering D2

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Laborationsanvisning. Geometriska figurer. Steg 2, laborationsuppgift 3. Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402

Axiell Arena. Samarbeta om bilder Regionbiblioteket i Kalmar län

Transkript:

Klasser och objekt i C# Från klassdiagram till C#-klass till objekt initierat av en konstruktor.

Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande programmering med C# vid Linnéuniversitetet. Du får använda detta verk så här: Allt innehåll i detta verk av Mats Loock, förutom Linnéuniversitetets logotyp och symbol samt fotografier, är licensierad under: Creative Commons Erkännande-IckeKommersiell-DelaLika 2.5 Sverige licens. http://creativecommons.org/licenses/by-nc-sa/2.5/se/ Det betyder att du i icke-kommersiella syften får: kopiera hela eller delar av innehållet sprida hela eller delar av innehållet visa hela eller delar av innehållet offentligt och digitalt konvertera innehållet till annat format du får även göra om innehållet Om du förändrar innehållet så ta inte med Linnéuniversitetets logotyp och symbol samt fotografier i din nya version! Vid all användning måste du ange källan: Linnéuniversitetet Inledande programmering med C# och en länk till https://coursepress.lnu.se/kurs/inledande-programmering-med-csharp och till Creative Common-licensen här ovan. 2 (10)

Klasser och objekt En klass kan liknas med en ritning. Ritningen beskriver bl.a. de attribut som används för att beskriva ett objekt. 254 437 gul 179 254 röd 357 318 grön Varje objekt har sin uppsättning av värden för de olika attributen som beskrivs av klassen. Jag tror jag förstår det här med klasser och objekt så långt. Klasser handlar om paketera ihop data på ett och samma ställe. Ja, klassen talar vilka typer av data som ska samlas ihop, och objektet innehåller själva datat. Men hur får jag in ett objekt, en sådan där rektangel, i datorn? 3 (10)

Var lagras ett objekt? int myint = 182; Värden som är av enkel typ, t.ex. int och double, lagras i den del av minnet som kallas stacken. Typer som int och double kallas också värdetyper (value types). Objekt, som är av klasstyp, lagras i den del av minnet som kallas heapen. Typer som är av klasstyp kallas referenstyper (reference types). Aha. Det är själva datat som beskriver rektangeln som sparas i datorns minne. Ja, och det är datat, i det här fallet bredden, höjden och färgen, som tillsammans utgör det vi kallar objekt. 4 (10)

Vem skapar objektet? 1 Common Language Runtime (CLR) CLR:en, som är en del av dotnetramverket, kör programmet och ansvarar bl.a. för att allokera minne på heapen till objekt. Hur mycket minne som ska allokeras 2 beskrivs av klassen. CLR:en läser klassdeklarationen och bestämmer på så sätt hur mycket minne som krävs, och 3 allokera därefter tillräckligt med minne för ett objekt. OK! Nu förstår jag mer till vad en klass bl.a. används till då programmet körs. 5 (10)

Hur skapar jag en klass? nyckelord klassens namn class Rectangle medlemmar class Rectangle // Fält (fields) int _width; int _height; ConsoleColor _color; Du skapar en klass genom att skriva en klassdefinition. En klassdefinition består av: Klassens namn Klassens medlemmar Fält (attribut) och metoder (operationer) är de viktigaste av klassens medlemmar. Fält är datamedlemmar och metoder är funktionsmedlemmar. Ett fält är en variabel som tillhör en klass. Här ser du en klass som har tre fält som beskriver datat som behöver lagras på heapen för ett objekt av typen Rectangle. Ah! Nu förstår jag lite mer hur jag skapar en klass. Men det finns säkert mer att säga om detta. 6 (10)

Hur skapar jag ett objekt? class Rectangle // Fält (fields) int _width; int _height; ConsoleColor _color; Klasser är referenstyper vilket innebär att skapade objekt kräver minne för såväl datat som en referens till datat (objektet). class Program static void Main(string[] args) Rectangle myrect; myrect = new Rectangle(); standardkonstruktor Referensen till datat lagras i en referensvariabel av klassens typ, och för att skapa själva objektet, allokera minne till det, måste du använda operatorn new, namnet på typen och efterföljande parenteser. Detta uttryck skapar objektet och returnerar en referens till det nya objektet som skapats och initierats på heapen. Minne för referensvariabeln och minne för datat till fälten, som initierats till sina standardvärden. 7 (10)

Standardkonstruktorn initierar objektet class Rectangle // Fält (fields) int _width; int _height; ConsoleColor _color; Alla klasser måste ha en konstruktor och saknas en konstruktor skapas en sådan automatiskt. Konstruktorn som skapas saknar parameterlista och kallas därför standardkonstruktor (default constructor, no-args constructor). Rectangle myrect = new Rectangle(); Då ett objekt skapas med hjälp av standardkonstruktorn får objektets fält standardvärden. Fält av typen int får t.ex. värdet 0 och fält av typen double får värdet 0.0. Fältens standardvärden beror av vilken typ de är. Jaha, men om jag vill ge objektet värden då jag skapar det då? Jag vill inte att det bara ska innehålla en massa nollor! 8 (10)

Din egna konstruktor class Rectangle // Fält (fields) int _width; int _height; ConsoleColor _color; Konstruktorer är speciella metoder som används då objekt skapas. En konstruktor är publik (i regel), har ingen returtyp, heter samma sak som klassen och har en parameterlista (som kan vara tom). // Konstruktorer (constructors) public Rectangle(int width, int height, ConsoleColor color) _width = width; _height = height; _color = color; Konstruktorn har tre parametrar så alla fält i klassen kan tilldelas värden då ett objekt skapas och initieras. static void Main(string[] args) Rectangle myrect = new Rectangle(179, 254, ConsoleColor.Red);... Fungerar det så här? Värdet 179 kopieras till parametern width i konstruktorn och sedan kopieras värdet vidare från parametern width till fältet _width. Ja! Du förstår precis hur det fungerar! 9 (10)

nu vet du en hel del! Nu förstår jag hjälpligt vad en klass är. Jag vet hur jag skapar objekt. Hur jag skriver en konstruktor vet jag också. Jag vet ju en hel del! Jag har ju kläm på datat, eller fälten heter det visst. Nu återstår bara vad jag kan göra med datat. Dags att titta på det här med metoder och egenskaper. Det kan ju inte vara så svårt. De opererar ju bara på datat. 10 (10)