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

Relevanta dokument
Arv Murach s: kap 14

Classes och Interfaces, Objects och References, Initialization

Metoder (funktioner) Murach s: kap Winstrand Development

Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder

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

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

UML. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

TDDE10 TDDE11, 725G90/1. Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU

TDDE10 TDDE11, 725G90. Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

Exceptions (undantag) Murach s: kap 7

Lösningsförslag övning 2.

Föreläsning 8. Arv. Arv (forts) Arv och abstrakta klasser

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Exempel: Exempel: Exempel: Exempel: $djur=array("ko","katt","älg"); foreach ($djur as $d) { echo $d. " "; } Resultat. ko katt älg

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat

Tillämpad programmering

Arv. Objektorienterad och komponentbaserad programmering

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Tentamen ID1004 Objektorienterad programmering October 29, 2013

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.

Modeller, Objekt och Klasser

Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering

DIAGNOSTISKT PROV. Tid. Hjälpmedel. Antaganden. Rättning. Övrigt. Diagnostiskt Prov. Klockan Inga

Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder

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

Objektorienterade programmeringsspråk. Objektorienterade språk. Den objekt-orienterade modellen. Jämför med icke-oo

TENTAMEN OOP

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

OOP Objekt-orienterad programmering

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

TENTAMEN OOP

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

JAVA Mer om klasser och objektorientering

Klasshierarkier - repetition

Objektorienterad Programmering (TDDC77)

OOP Objekt-orienterad programmering

TUTORIAL: KLASSER & OBJEKT

Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning

Programmering B med Visual C

Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag

Vad är ett objekt? Tillstånd och beteende. Vad är ett objekt? Exempel

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

"Är en"-relation. "Har en"-relation. Arv. Seminarium 2 Relevanta uppgifter. I exemplet Boll från förra föreläsningen gällde

Innehåll. dynamisk bindning. och programmering CRC) u Arv, polymorfi och

Objektorientering: Lagring, räckvidd och livstid

Polymorfi. Objektorienterad och komponentbaserad programmering

Objektorienterad Programkonstruktion. Föreläsning 4 8 nov 2016

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

Programmering för språkteknologer II, HT2011. Rum

Grundläggande programmering med C# 7,5 högskolepoäng

Övning. Introduktion och förberedelser

Del2 Klasser, medlemmar och arv Ämnesområden denna föreläsning:

DAT043 - Föreläsning 7

Windows Forms Winstrand Development

Java, klasser, objekt (Skansholm: Kapitel 2)

Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

Programmering i C++ EDA623 Objektorienterad programutveckling. EDA623 (Föreläsning 5) HT / 33

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

Imperativ programmering. Föreläsning 4

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

Enkla variabler kontra referensvariabel

Generiska konstruktioner. Kursbokens kapitel 13

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

TDDD78 Viktiga begrepp, del 2

TENTAMEN OOP

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

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

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

Föreläsning 6: Metoder och fält (arrays)

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

Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag

Klasser i Java kan ha metoder och egenskaper. Metoder beskriver funktioner som klassen kan utföra. Egenskaper beskriver innehållet i klassen.

2203$( Föreläsning ii - Mer om Java bla this och konstruktorer. Exempel: lampa

Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering

OOP Objekt-orienterad programmering

725G61 - Laboration 5 Grundläggande objektorientering. Johan Falkenjack

Design av interaktiv multimedia. Läs i förväg om det som övningarna kommer att beröra. Träna hemma både före och efter övningarna.

Objekt och klasser - Introduktion

Laboration 1 - Grunderna för OOP i Java

Arbeta med databas. Översikt. Lektion 1: Arbeta med Entity Data Models. Arbeta med Entity Data Models. LINQ (Language Integrated Query).

JAVAUTVECKLING LEKTION 11

Lösningsförslag. Programmeringsmetodik, KV: Java och OOP. 17 januari 2004

TDDC76 Programmering och datastrukturer

Malmö högskola 2007/2008 Teknik och samhälle

Objekt-orienterad programmering. Klassbegreppet och C++ UML. UMLs fördelar

F6 Objektorienterad design. ID1004 Objektorienterad programmering Fredrik Kilander

Arrayer (vektorer) Murach s: kap Elektronikcentrum i Svängsta AB

Objektorienterad programmering

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

TDIU01 - Programmering i C++, grundkurs

Objektorientering: Lagring och livstid

TDDD78 Objektorientering: Lagring och livstid

Programmering A C# VT Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson

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

Subklasser och arv Inledning till grafik (JFrame och JPanel). Något om interface. Objektorienterad programvaruutveckling GU (DIT011) Subklasser

Transkript:

Objektorienterad Programmering (OOP) Murach s: kap 12-16 2013-01-28 1 Winstrand Development

Objektorienterad Programmering Förkortas OOP Objektorientering innebär att man delar in koden i olika block, klasser, som kan återanvändas C# och.net är ett helt objektorienterat Vilar på tre grundpelare: Inkapsling Arv Polymorfism Vi har tidigare använt oss av klasser och objekt, bland annat Form, Button, Random, List<T> och Math. Winstrand Development 2013-01-28 2

Klasser Definieras med nyckelordet class. Varje klass ska vara designad, och ansvara, för sitt egna område. Klassen kan ses som en svart låda (black box) //A class class MyClass // A Field private int value; // A Constructor public MyClass(int val) value = val; //other class members... Winstrand Development 2013-01-28 3

Namn Klasser En klass består av följande element (ett urval) Beskrivning Fält Properties (egenskaper) Konstruktor Metoder Events (händelser) En variabel deklarerad i klassen och tillhör varje objekt även kallad instansvariabel (instance variable). Är (bör) alltid vara privat. Tillåter ett annat objekt att komma åt ett Field i klassen. Exempelvis är Length ett property på ett string-objekt som talar om hur många tecken strängen innehåller. En speciell metod som anropas när en instans objektet skapas. Ex. string name = new string(); Någonting som kan utföras av objektet och kan anropas av andra objekt. Exempelvis anropas metoden Sort() på en lista för att sortera elementen. En signal som skickas mellan objekt som meddelar att någonting har hänt. Ex: användaren trycker på en kapp (Button). Winstrand Development 2013-01-28 4

Trelagersarkitektur (three-layered architecture) Klasserna kan delas in i olika lager Ger återanvändbarhet Presentationslagret (presentation layer/tier) Användarens gränssnitt Forms, Console, etc. Mellanlagret (Business layer/tier, Business Logic, Logic layer/tier) Datalagret (Data layer/tier, Database Layer) Länken mellan presentation och data Utför beräkningar Åtkomst till databaser. ADO.NET Winstrand Development 2013-01-28 5

Klasser och objekt En instans av en klass kallas för ett objekt Man kan tänka sig att en klass är en ritning, en definition, på ett hus medan objektet är ett hus som byggts efter ritningarna, en implementation av ritningen. Andra saker en klass kan representera är en abstraktion (Rectangle, Color) eller att liknande funktionalitet kan grupperas ihop, såsom Math-klassen. Winstrand Development 2013-01-28 6

Klasser och objekt Objekt är referenstyper Allokeras på heapen En pekare med en adress till objektet läggs på stacken //A class class MyClass // A Field private int value; // A Constructor public MyClass(int val) value = val; public partial class Form1 : Form private void btncreate_click(object sender, EventArgs e) int x = 10; //On the stack MyClass theinstance = new MyClass(x); //On the heap Winstrand Development 2013-01-28 7

Jämföra objekt //------------------------------------------ //Value assignment int val1 = 10; int val2 = val1; val2 = 20; //val1 = 10, val2 = 20; //------------------------------------------ //Reference assignment Product prod1 = new Product(29.90m, "Food"); Product prod2 = prod1; prod2.price = 40.0m; //prod2.price = 40.0m, prod1.price = 40.0m //------------------------------------------ //Reference comparison Product prod3 = new Product(50m, "Pizza"); Product prod4 = new Product(50m, "Pizza"); bool comp1 = (prod1 == prod2); //true bool comp2 = (prod3 == prod4); //false prod3 och prod4 är skapade med samma parametrar, men pekar inte mot samma objekt Winstrand Development 2013-01-28 8

Skapa en klass 3 1 2 Winstrand Development 2013-01-28 9

Klasser Inkapsling (encapsulation) Inkapsling är ett av de viktigaste begreppen inom OOP. Man definierar här åtkomsten från andra klasser, dvs. vad som är synligt. Det finns tre huvudsakliga nyckelord: public alla klasser har åtkomst private endast den egna klassen har åtkomst protected egna klassen samt ärvda klasser har åtkomst Winstrand Development 2013-01-28 10

Fält Variabler som tillhör en metod kallas fält, fields, eller ibland för medlemsvariabler Deklareras i klassen, ej inuti metoder Kan vara data- och referenstyper Tillhör instansen, alltså objektet Tillgängliga i hela klassen Ska vara private eller protected class Product private decimal price; private string name; //Other members... Winstrand Development 2013-01-28 11

Fält - Exempel class Product private decimal price; private string name; private void btncreate_click(object sender, EventArgs e) Product p = new Product("name", 100); p.applydiscount(0.1m); MessageBox.Show(p.GetDisplayText()); //... public Product(string thename, decimal theprice) //Accessing the fields name = thename; price = theprice; public void ApplyDiscount(decimal discount) price *= (1-discount); public string GetDisplayText() return name + "\t" + price.tostring("c"); Winstrand Development 2013-01-28 12

Properties (egenskaper) Ett sätt att exponera fält Innehåller två accessors get hämta ett värde set sätt värdet Kan vara read/write only En automatisk property skapas då get och set lämnas tomma public string Name get return Name; set name = value; Winstrand Development 2013-01-28 13

Properties - Exempel //Performs some validation in set public decimal Price get return price; set if (value < 0) throw new ArithmeticException("Kan inte använda negativa värden"); price = value; //Automatic property public int Id get; set; private void btncreate_click(object sender, EventArgs e) Product p = new Product("name", 100); p.id = 1; p.name = "Bok"; p.price = 10m; MessageBox.Show(p.GetDisplayText()); Winstrand Development 2013-01-28 14

Metoder Alla metoder tillhör en klass Kan också vara public eller private Överlagring (overloading) Flera metoder har samma namn men olika signatur Kan skicka med olika antal parametrar samt olika typer av parametrar Winstrand Development 2013-01-28 15

Överlagring class Library List<Book> booklist = new List<Book>(); public string GetBookTitle(string author) string title = ""; class Book public string Title get; set; public string Author get; set; public int Id get; set; foreach (Book item in booklist) if (item.author == author) title = item.title; break; return title; public string GetBookTitle(int id) string title = ""; foreach (Book item in booklist) if (item.id == id) title = item.title; break; return title; //... Winstrand Development 2013-01-28 16

Konstruktorer En speciell metod som körs när ett objekt skapas Har samma namn som klassen Har inte returvärde, inte ens void! En konstruktor utan några parametrar kallas för default constructor class Product private decimal price; private string name; public Product(string thename, decimal theprice) //Accessing the fields name = thename; price = theprice; Winstrand Development 2013-01-28 17

Konstruktorer class Product private decimal price; private string name; // Default constructor public Product() name = "UNKNOWN"; public Product(string thename) name = thename; public Product(string thename, decimal theprice) //Accessing the fields name = thename; price = theprice; Winstrand Development 2013-01-28 18

Statiska medlemmar Definieras med nyckelordet static Medlemmen tillhör klassen, inte objektet Delar eller hela klasser kan vara statiska class Library private static int maxitems = 100; public static int MaxItems get return maxitems; set maxitems = value; Winstrand Development 2013-01-28 19