PROV. 12 Egenskaper (provavsnitt)
|
|
- Patrik Ivarsson
- för 8 år sedan
- Visningar:
Transkript
1 12 Egenskaper (provavsnitt) 12.1 Egenskaper 12.2 Deklaration av egenskaper 12.3 Åtkomsttjänster för egenskaper 12.4 Åtkomsttjänster med genererade instansvariabler 12.5 Åtkomsttjänster med egna instansvariabelnamn 12.6 Åtkomsttjänster 12.7 Åtkomsttjänster med explicit implementation 12.8 Använda egenskaper via punktnotation 12.9 Egenskaper med endast läsrättighet
2
3 12.1 Egenskaper Objective-C har särskilt stöd för att arbeta med egenskaper: Deklareras med det reserverade Klassen har åtkomsttjänster för egenskapens värde Åtkomsttjänsterna kan ge läs- eller läs- och skrivrättigheter för värdet Åtkomsttjänsterna behöver inte deklareras explicit i klassdefinitionen Metoder för åtkomsttjänsterna kan genereras automatiskt, om så önskas Vi kan skräddarsy hur egenskaper som är pekare till objekt ska hanteras Egenskaper kan kombineras med olika tekniker för minneshantering Egenskaper hos objekt blir åtkomliga via en förenklande punktnotation Stödet för egenskaper infördes i Objective-C 2.0. Precis som flera andra objektorienterade programspråk har Objective-C fr o m version 2.0 särskilt stöd i språket för att arbeta med egenskaper. En egenskap (den engelska termen är property) hos ett objekt är något som har ett värde som vi lätt vill kunna hantera, t ex via åtkomsttjänster i klassen. Egenskaper hos en klass i Objective-C kan deklareras med det reserverade Det är en sådan deklaration som öppnar vägen för de fördelar som beskrivs i återstoden av kapitlet, t ex kodgenerering av åtkomsttjänster och en ny syntax för åtkomst. När en egenskap deklareras i en klass innebär det ett löfte om att klassen ska tillhandahålla åtkomsttjänster för egenskapen. Vi behöver inte längre deklarera åtkomsttjänsterna explicit. En egenskap kan deklareras med antingen endast läsrättigheter för dess värde (dvs det finns endast en läsande åtkomsttjänst), eller både läs- och skrivrättigheter för dess värde (dvs det finns både en läsande och en ändrande åtkomsttjänst). Koden för metoderna för åtkomsttjänsterna för en egenskap kan genereras automatiskt. Alternativt är det fortfarande möjligt att implementera åtkomstmetoderna för hand. Vi kan påverka vilken kod som genereras för en åtkomsttjänst. Bl a kan vi skräddarsy hur egenskaper som är pekare till objekt ska hanteras (delad tillgång till objekt eller egna unika kopior av objekt). Det finns särskilt stöd för att hantera egenskaper med olika tekniker för minneshantering, så att rätt kod genereras i förhållande till den minneshantering som används. Egenskaper hos ett objekt blir automatiskt åtkomliga via en punktnotation som påminner om den för fält i poster, men där det fortfarande är egenskapens åtkomsttjänster som används. Sammantaget kan detta alltså betyda att vi slipper såväl deklarera, implementera som anropa åtkomsttjänster explicit!
4 12.2 Programmera i Objective-C/1.0 Deklaration av egenskaper Time : int int seconds; + (id) timewithhours: (int) h minutes: (int) m seconds: (int) s; - (id) initwithhours: (int) h minutes: (int) m seconds: (int) s; Egenskaper måste deklareras med typ och namn Egenskaper får deklareras i: klassdefinitioner gränssnittsdefinitioner klassutbyggnad Om vi betraktar klassen Time från föregående kapitel, finns det tre tydliga egenskaper hos varje objekt av klassen: timtalet, minuttalet och sekundtalet. Vi deklarerar en egenskap i en klassdefinition genom att efter klassnamnet och arvsrelationen lägga till en eller flera egenskapsdeklarationer. Varje egenskapsdeklaration består av det reserverade egenskapens typ, egenskapens namn samt semikolon: Mellan det reserverade och egenskapens typ kan det förekomma ett eller flera kommauppräknade attribut inom parenteser. Vi återkommer till dessa attribut senare i int hours; Varje egenskapsdeklaration är ett löfte om att det kommer att finnas åtkomsttjänster för var och en av de deklarerade egenskaperna. Om inget annat sägs ska egenskapen vara både läs- och skrivbar, dvs ha en läsande åtkomsttjänst med samma selektor som egenskapens namn, inga argument och egenskapens typ som returtyp samt en ändrande åtkomsttjänst med en selektor som består av prefixet set, egenskapens namn med stor begynnelsebokstav samt kolon, ett argument av egenskapens typ och returtypen void. En deklaration av egenskapen hours motsvarar alltså att vi hade deklarerat följande tjänster i klassen: - (int) hours; - (void) sethours: (int) h; Observera att klassen Time inte längre deklarerar några åtkomsttjänster explicit i klassdefinitionen.
5 12.3 Åtkomsttjänster för egenskaper #import Time { int hours; int minutes; int seconds; hours, minutes, seconds; + (id) timewithhours: (int) h minutes: (int) m seconds: (int) s { return [[self alloc] initwithhours: h minutes: m seconds: s]; - (id) initwithhours: (int) h minutes: (int) m seconds: (int) s { self = [super init]; if (self!= nil) { hours = h; minutes = m; seconds = s; return self; - (NSString *) description { return [NSString [self hours], [self minutes], [self seconds]]; Här visas hela klassimplementationen för klassen Time. För de egenskaper som deklarerats i klassdefinitionen (dvs i vårt fall egenskaperna hours, minutes och seconds) kan vi få kompilatorns hjälp att generera metoder för egenskapernas åtkomsttjänster. Det gör vi genom att någonstans mellan de reserverade och lägga till bestående av det reserverade följt av en kommauppräknad lista av egenskaper som det ska genereras åtkomsttjänster för. Satsen avslutas med hours, minutes, seconds; Vi hade också kunnat använda en per egenskap. För egenskapen hours innebär detta exempelvis att det genereras två metoder motsvarande: - (int) hours { return hours; - (void) sethours: (int) h { hours = h; Som synes förutsätter dessa metoder att det finns en instansvariabel med samma namn som egenskapen. Vi har därför ändrat namnen på instansvariablerna i deklarationerna längst upp i klassimplementationen. Vi är inte tvungna att för att generera åtkomstmetoder för en egenskap. Det är fullt tillåtet att implementera åtkomstmetoderna för hand.
6 12.4 Programmera i Objective-C/1.0 Åtkomsttjänster med genererade kan även generera instansvariabler för egenskaper: Time : int int seconds; + (id) timewithhours: (int) h minutes: (int) m seconds: (int) s; - (id) initwithhours: (int) h minutes: (int) m seconds: (int) s; #import Time hours, minutes, seconds;... Endast om målplattformen är Mac OS X 10.5 (64 bitar) eller senare, eller ios I exemplet på föregående sida deklarerade vi instansvariabler som matchade namnen på egenskaperna som genererade åtkomstmetoder för. Vi hade också, som bilden på denna sida visar, kunnat utelämna deklarationerna av instansvariablerna i klassdefinitionen och i stället generera deklarationer av instansvariablerna åt oss. Instansvariablernas ges då automatiskt samma namn som motsvarande egenskap. Dessa instansvariabler är fortfarande fullt åtkomliga i klassens metoder. Detta fungerar emellertid endast om vi ska generera kod för de målplattformar som har en tillräckligt modern runtimemiljö för Objective-C, vilket innebär att målplattformen måste vara en 64 bitars version av Mac OS X i version 10.5 eller senare, eller ios.
7 12.5 Åtkomsttjänster med egna instansvariabelnamn Time : int int seconds;... #import Time { int myhours; int myminutes; int myseconds; hours = minutes = seconds = myseconds;... Som vi såg tidigare i kapitlet kommer normalt att generera kod som förutsätter att värdet av en egenskap ska lagras i en instansvariabel med samma namn. Om vi av något skäl vill att en instansvariabel ska ha ett annat namn, t ex om vi vill behålla de instansvariabler som vi deklarerade i föregående kapitel (myhours, myminutes och myseconds), kan vi ange instansvariabelns korrekta namn efter ett hours = minutes = seconds = myseconds; Om vi vill lagra egenskapens värde på ett helt annat sätt än i en instansvariabel i det egna objektet, återstår möjligheten att implementera åtkomstmetoderna för hand. Se senare i kapitlet!
8 12.6 Programmera i Objective-C/1.0 kan utelämnas helt fr o m Apple LLVM compiler 4.0: Time : int int seconds; + (id) timewithhours: (int) h minutes: (int) m seconds: (int) s; - (id) initwithhours: (int) h minutes: (int) m seconds: (int) s; #import Time Time24.m... Metoder för åtkomsttjänsterna genereras automatiskt Instansvariablerna namnges med understreck följt av egenskapens namn From Apple LLVM compiler 4.0 (dvs fr o m Xcode 4.4) är det möjligt att gå ett steg längre och helt Detta leder automatiskt till att såväl metoder för egenskapernas åtkomsttjänster som de nödvändiga instansvariablerna för egenskaperna genereras. De instansvariabler som genereras på detta sätt ges emellertid namn efter en avvikande regel: namnen byggs upp av ett understreck följt av den motsvarande egenskapens namn. I bildens exempel ges instansvariablerna alltså namnen _hours, _minutes resp _seconds. Dessa instansvariabler är fortfarande fullt åtkomliga i klassens metoder, men tanken med de avvikande variabelnamnen är att inte uppmuntra till oavsiktlig direkt användning av instansvariablerna i stället för egenskapernas åtkomsttjänster. Observera att det med tidigare versioner av Apples kompilatorer hade en helt annat effekt att för en egenskap: det innebar att man visserligen slapp deklarera åtkomsttjänster för hand i klassdefinitionen innebar ett löfte om att de fanns), men man var tvungen att både deklarera instansvariabler och implementera metoder för åtkomsttjänsterna själv.
9 12.7 Åtkomsttjänster med explicit implementation Time : int int seconds; + (id) timewithhours: (int) h minutes: (int) m seconds: (int) s; - (id) initwithhours: (int) h minutes: (int) m seconds: (int) s; #import Time Time24.m... - (void) sethours: (int) h { _hours = h % 24; Vi är inte bundna till att låta metoder för en egenskaps åtkomsttjänster genereras av kompilatorn. Det är fullt tillåtet att förse klassen med en explicit implementation av en eller båda åtkomstmetoderna för en egenskap. I bildens exempel genereras den läsande åtkomstmetoden hours av kompilatorn, medan vi definierar den ändrande åtkomstmetoden sethours: explicit: - (void) sethours: (int) h { _hours = h % 24; I metoden normaliserar vi timtalet till ett heltal i intervallet 0-23, så att klockslag som 24:00:00 omvandlas till en standardiserad form som alltid ger samma egenskapsvärden för samma klockslag på dygnet. Observera att vi inte behöver deklarera tjänsten sethours: explicit i klassdefinitionen. Vi har redan lovat att tjänsten finns i och med deklarationen av egenskapen hours: Så länge vi endast implementerar den ena åtkomsttjänsten för en läs- och skrivbar egenskap explicit, kommer Apple LLVM compiler 4.0 och senare versioner fortfarande att generera en instansvariabel för egenskapen automatiskt. Om vi däremot väljer att implementera samtliga åtkomsttjänster för en egenskap explicit, måste vi själva se till att skapa en instansvariabel för egenskapen. Ett sätt är att använda hours = _hours;
10 12.8 Programmera i Objective-C/1.0 Använda egenskaper via punktnotation Egenskaper är åtkomliga via notationen objektpekare.egenskapsnamn Kan användas såväl för att läsa som att ändra egenskapen Utnyttjar klassens åtkomsttjänster inte instansvariablerna! Källkoden: Time *endtime = [Time timewithhours: 12 minutes: 30 seconds: 0]; int endhour = endtime.hours; // 12 endtime.minutes = 45; // 12:45:00 endtime.hours += 3; // 15:45:00 kommer alltså att tolkas som: Time *endtime = [Time timewithhours: 12 minutes: 30 seconds: 0]; int endhour = [endtime hours]; // 12 [endtime setminutes: 45]; // 12:45:00 [endtime sethours: [endtime hours] + 3]; // 15:45:00 Vi har redan sett att egenskapsdeklarationer gör att vi slipper deklarera och implementera åtkomsttjänster. Det finns emellertid ytterligare en fördel som vi kan dra nytta av, om vi vill: vi slipper t o m anropa dem. I och med att vi deklarerar en egenskap hos en klass av objekt, får vi tillgång till en förenklad syntax för att läsa och ändra egenskapens värde. Syntaxen bygger på en punktnotation (lik den för fält i poster) där egenskaper är åtkomliga via uttryck av formen objektpekare.egenskapsnamn. Vi kan använda denna syntax för att hämta värdet av en egenskap, så att uttrycket endtime.hours tolkas som meddelandet [endtime hours]. På samma sätt kan vi ändra värdet av en egenskap med den nya syntaxen: endtime.minutes = 45; vilket har samma effekt som meddelandet: [endtime setminutes: 45]; Detta fungerar även med sammansatta tilldelningsoperatorer, t ex: endtime.hours += 3; som får samma effekt som: [endtime sethours: [endtime hours] + 3]; Observera att vi fortfarande använder klassens åtkomsttjänster vi manipulerar inte instansvariablerna direkt!
11 12.9 Egenskaper med endast läsrättighet Egenskaper deklarerade med attributet readonly ges endast läsrättighet: Account : NSString long balance; + (id) accountwithaccountno: (NSString *) no; + (id) accountwithaccountno: (NSString *) no balance: (long) amount; - (id) initwithaccountno: (NSString *) no; - (id) initwithaccountno: (NSString *) no balance: (long) amount; - (long) interest; - (void) deposit: (long) amount; - (void) withdraw: (long) amount; - (void) transfer: (long) amount to: (Account *) toaccount; - (void) printdetails; Endast metoden för den läsande åtkomsttjänsten genereras En egenskapsdeklaration gäller normalt en egenskap med både läs- och skrivrättigheter, vilket innebär ett löfte om att det finns såväl en läsande som en ändrande åtkomsttjänst. För en sådan egenskap kommer automatiskt metoder för båda åtkomsttjänsterna att genereras (såvida de inte implementerats explicit). Det är möjligt att deklarera en egenskap med enbart läsrättigheter, dvs en egenskap där löftet inskränker sig till att det ska finnas en läsande åtkomsttjänst. Detta görs genom att ange attributet readonly inom parenteser efter det reserverade i NSString *accountno; För en sådan egenskap skulle följdriktigt endast en metod för den läsande åtkomsttjänsten (accountno) genereras. I klassen Account från tidigare kapitel skulle detta kunna passa för såväl egenskapen accountno (kontonummer) som balance (saldo), eftersom ett kontonummer aldrig bör ändras hos ett befintligt kontoobjekt, och saldot endast ändras relativt av tjänster som deposit: och withdraw:. En egenskap som inte uttryckligen deklareras med enbart läsrättigheter har alltid både läs- och skrivrättigheter. Detta kan anges explicit med attributet int hours;
PROV. 10 Uppräknade datatyper
10 10.1 10.2 Definition 10.3 Användning och regler 10.4 switch-satsen 10.5 Iteration över samtliga värden 10.6 Instansvariabler och instanstjänster 10.7 Värdespecifika implementationer 10.1 Hur ser vi
Läs merJava, klasser, objekt (Skansholm: Kapitel 2)
Java, klasser, objekt (Skansholm: Kapitel 2) Uppsala Universitet 11 mars 2005 Objectorienterad programmering Sida 1 Vad är en klass? En klass är ett sätt att beskriva en mängd objekt och deras gemensamma
Läs merpublic och private Obs: private inte skyddar mot access från andra objekt i samma klass.
public och private En metod som är public får anropas från alla metoder i alla klasser. Ett attribut som är public får avläsas och ändras från alla metoder i alla andra klasser. En metod som är private
Läs merUppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här:
Att skapa en klass kvadrat Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här: public class Kvadrat { private int sida; Det var väl inte
Läs merKort om klasser och objekt En introduktion till GUI-programmering i Java
Kort om klasser och objekt En introduktion till GUI-programmering i Java Klasser En klass är en mall för hur man ska beskriva på något. Antag att vi har en klass, Bil. Den klassen innehåller en lista på
Läs merKlasshierarkier - repetition
Klasshierarkier - repetition Klasser kan byggas på redan denierade klasser, egna och/eller färdigskrivna, genom: I att klassobjekt används som attribut (instansvariabler): har-relation. Exempel: traksystemet
Läs merMer om klasser och objekt
Klassvariabler och klassmetoder En klass kan innehålla klassvariabler och klassmetoder. TDA143 I1 Programmerade system Föreläsning 5 (OH-bilder 5) Mer om klasser och objekt Christer Carlsson Det som skiljer
Läs merObjektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering
och metoder Introduktion till objektorienterad programmering Markus Saers markus.saers@lingfil.uu.se orientering Deklarativ programmering Beskriver förutsättningarna för något Prolog Imperativ programmering
Läs merEnkla variabler kontra referensvariabel
Enkla variabler kontra referensvariabel En variabel är ett namngivet minnesutrymme i datorns primärminne. En variabel som används för att representera en primitiv datatyp kallas för enkel variabel. Deklarationssatsen
Läs merKLASSER. Inkapsling Abstrakt datatyp Public och private. Klassmedlemmar Datamedlemmar Exempel Funktionsmedlemmar
KLASSER Inkapsling Abstrakt datatyp Public och private Klassmedlemmar Datamedlemmar Funktionsmedlemmar Initiering av objekt Konstruktor Ta del av objektets tillstånd Förändra objektets tillstånd Avinitiera
Läs merEnKlass. Instans 3 av EnKlass. Instans 2 av EnKlass
Övningstillfälle 4 Klasser och objekt (s. 221 ff.) Syfte 1: En naturlig fortsättning på koncepten abstraktion och inkapsling! Funktion (återanvändning av skyddad, säker och testad kod) Modul (återanvändning
Läs merProgrammering i C++ Kompilering från kommandoraden
Programmering i C++ Kompilering från kommandoraden Sven Gestegård Robertz Datavetenskap, LTH 9 november 2015 Sammanfattning Ibland vill man, av olika anledningar, inte använda en stor integrerad utvecklingsmiljö
Läs merInkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och private
Inkapsling tumregler Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler Tobias Wrigstad (baserat på material från Tom Smedsaas) 5 november 2010 1. Man skall
Läs merDAT043 - Föreläsning 7
DAT043 - Föreläsning 7 Model-View-Controller, mer om klasser och interface (arv, ) 2017-02-06 Designmönstret Observer avläser Observer Observable meddelar Observer avläser En eller flera objekt registrerar
Läs merDesign av en klass BankAccount som representerar ett bankkonto
Klasser Kommer ta upp följande begrepp: Design av en klass Implementera en klass Testa en klass med en mainmetod Instansvariabler, lokala variabler, formella parametrar, aktuella parametrar och variablers
Läs merObjekt och klasser - Introduktion
Objekt och klasser - Introduktion Begreppet objekt Hur klasser används för att skapa objekt Fördefinierade klasser Metoder och parameteröverföring Definiera klasser Modifierare Statiska variabler och metoder
Läs merKlasser och objekt. Henrik Johansson. August 20, 2008
Föreläsning 5 Klasser och objekt Henrik Johansson August 20, 2008 Ett objekt är en modell av ett fysisikt eller ett tänkt ting. Objektet och det som vi kan göra med det beskrivs av en mall, en klass. Ett
Läs merArv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }
En klassdefinition class A extends B {... Arv definierar en klass A som ärver av B. Klassen A ärver alla fält och metoder som är definierade för B. A är en subklass till B. B är en superklass till A. class
Läs merProgrammeringsteknik med C och Matlab
Programmeringsteknik med C och Matlab Kapitel 2: C-programmeringens grunder Henrik Björklund Umeå universitet Björklund (UmU) Programmeringsteknik 1 / 32 Mer organisatoriskt Imorgon: Datorintro i lab Logga
Läs merObjekt och klasser - Introduktion. Objekt. SparKonto.java 2. SparKonto.java 1. Konton.java. Ett objekt har: Ett bankkonto
Objekt och klasser - Introduktion Objekt Ð Begreppet objekt Ð Hur klasser anvšnds fšr att skapa objekt Ð Fšr-definierade klasser Ð Metoder och parameteršverfšring Ð Definiera klasser Ð Modifierare Ð Statiska
Läs merGeneriska konstruktioner. Kursbokens kapitel 13
Generiska konstruktioner Kursbokens kapitel 13 1 Vad är en generisk konstruktion? Generisk står för; allmän eller generell En generisk konstruktion kan användas för olika typer av data Med hjälp av templates
Läs merÖvningsuppgift. Bankkonton. Steg 2. 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 Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande programmering
Läs merÖvningar Dag 2 En första klass
Kurs i C++ Sid 1 (5) Övningar Dag 2 En första klass Denna övning går ut på att steg för steg bygga upp en klass och skapa objekt. Vi kommer att utgå från en sammansatt datatyp i en struct och parallellt
Läs merC++ Objektorientering - Klasser. Eric Elfving
C++ Objektorientering - Klasser Eric Elfving 1 / 20 Återblick struct struct är bra att ha för att skapa aggregat - slå ihop flera data till en ny datatyp. Ett problem med struct är åtkomst... 2 / 20 Följande
Läs merJAVAUTVECKLING LEKTION 11
JAVAUTVECKLING LEKTION 11 2016 Mahmud Al Hakim mahmud.al.hakim@nackademin.se www.alhakim.se AGENDA Mer om klasser och objekt Statiska/instans-metoder Överlagrade metoder Inkapsling Konstruktorer 1 UPPGIFT
Läs merObjektorientering/1.2. 3 Klasser
3 Klasser 3.1 Att hantera många objekt 3.2 Klasser 3.3 Krav för att bilda en klass 3.4 Får två objekt vara helt identiska? 3.5 Måste vi använda klasser i objektorientering? 3.6 En klassbeskrivning 3.7
Läs merFöreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser
Föreläsning 5-6 Innehåll Exempel på program med objekt Skapa och använda objekt Skriva egna klasser public class DrawSquare { public static void main(string[] args) { SimpleWindow w = new SimpleWindow(600,
Läs merF4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander
F4 Klasser och Metoder ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Klasser och objekt Klasser definierar (utgör idén) Objekt instantierar (utgör förekomsten) En klassdefinition Många
Läs merFöreläsning 5-6 Innehåll
Föreläsning 5-6 Innehåll Skapa och använda objekt Skriva egna klasser Datavetenskap (LTH) Föreläsning 5-6 HT 2017 1 / 32 Exempel på program med objekt public class DrawSquare { public static void main(string[]
Läs merDatatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek
De åtta primitiva typerna Java, datatyper, kontrollstrukturer Skansholm: Kapitel 2) Uppsala Universitet 11 mars 2005 Typ Innehåll Defaultvärde Storlek boolean true, false false 1 bit char Tecken \u000
Läs merTDIU01 - Programmering i C++, grundkurs
TDIU01 - Programmering i C++, grundkurs Sammanfattning period 1 Eric Elfving Institutionen för datavetenskap 1 oktober 2013 Översikt Ett C++-programs uppbyggnad Variabler Datatyper Satser Uttryck Funktioner
Läs merLite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.
Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Föreläsning 3 Innehåll Lite om felhantering och Exceptions Mer om variabler och parametrar
Läs merObjektorienterad programmering Föreläsning 4
Objektorienterad programmering Föreläsning 4 Copyright Mahmud Al Hakim mahmud@dynamicos.se www.webbacademy.se Agenda Introduktion till objektorientering Klasser och Objekt Instansvariabler Metoder Introduktion
Läs merDet finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.
Tentamen Programmeringsteknik I 2015-06-11 Skrivtid: 08:00 13:00 Hjälpmedel: Java-bok Tänk på följande Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.
Läs merProgrammering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p
Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Skriven av Michael Andersson Introduktion Programmering I högnivåspråk fokuserar på själv problemet (algoritmen) istället
Läs mer(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java
(Man brukar säga att) Java är... Denna föreläsning Allmänt om Java Javas datatyper, arrayer, referenssemantik Klasser Strängar enkelt baserat på C/C++ objekt-orienterat från början dynamiskt utbyggbart
Läs merFöreläsning 2 Objektorienterad programmering DD1332. Typomvandling
metoder Föreläsning 2 Objektorienterad programmering DD1332 Array [modifierare] String metodnamn (String parameter) Returtyp (utdata typ) i detta fall String Indata typ i detta fall String 1 De får man
Läs merPROMETHEUS. Ett typat, objektorienterat programmeringsspråk av Tim Andersson.
PROMETHEUS Ett typat, objektorienterat programmeringsspråk av Tim Andersson. Linköpings universitet TDP019 Projekt: Datorspråk Examinator: Anders Haraldsson, IDA Tim Andersson timan976@student.liu.se Utskriftsdatum:
Läs merFöreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt
Föreläsning 4 Klasser Och Objekt Klass Beskrivning av en objekttyp Beskriver egenskaper och beteende (fält och metoder) Klassen fungerar som en ritning Objekt skapas från klassbeskrivningen - instansieras
Läs merBankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.
Bankkonto - övning Övningar att göra efter lärardemostration. Filen bankkonto.zip innehåller ett projekt med klassen Bankkonto. Zippa upp denna fil och öppna projektet i BlueJ och skriv vidare på klassen
Läs merIntroduktion till arv
Introduktion till arv 6 INTRODUKTION TILL ARV Arv Generell-Speciell Arv för att utnyttja det vi redan gjort Återanvändning Basklass Härledd klass Varför arv? Inför en subklass för att uttrycka specialisering
Läs merIdag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.
Idag Javas datatyper, arrayer, referenssemantik Klasser Arv, polymorfi, typregler, typkonvertering Strängar Tänker inte säga nåt om det som är likadant som i C. Objectorienterad programmering Sida 1 Ett
Läs merObjektorienterad Programmering DAT043
Objektorienterad Programmering DAT043 Föreläsning 3 22/1-18 Moa Johansson (delvis baserat på Fredrik Lindblads material) 1 Kom ihåg: Visa Javas API. Nämn att slidesens också har tillhörande text på kurshemsidan.
Läs merIdag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes
Idag statiska metoder och variabler private/public/protected final, abstrakta klasser, gränssnitt, delegering wrapper classes ett lite större exempel Objectorienterad programmering Sida 1 Vad vi vet om
Läs merJava: kort introduktion. Trådar. Något om mutex, Dekkers algoritm och monitorer. Javas ("inbyggda monitor") synchronized.
2EMHNWRULHQWHUDG5HDOWLGVSURJUDPPHULQJ Java: kort introduktion. Trådar. Något om mutex, Dekkers algoritm och monitorer. Javas ("inbyggda monitor") synchronized. previous next Java Java är konstruerat på
Läs merFöreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder
Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305 Klass Object, instans av klass public/private Klassvariabler och klassmetoder 1 Array och ArrayList Arrayer och ArrayList är till för att innehålla
Läs merParameteröverföring. Exempel. Exempel. Metodkropp
Exempel atriangle.changesize (100, 50); // OK atriangle.changesize (100); // fel antal atriangle.changesize ( 1, 50); // fel datatyp char c = atriangle.getarea (); // fel datatyp Parameteröverföring I
Läs merC++ Objektorientering - Klasser. Eric Elfving Institutionen för datavetenskap
C++ Objektorientering - Klasser Eric Elfving Institutionen för datavetenskap 1 / 23 Återblick struct struct är bra att ha för att skapa aggregat - slå ihop flera data till en ny datatyp. Ett problem med
Läs mer1 Comparator & Comparable
1 Comparator & Comparable 1.1 Implementation av Comparable Att implementera Comparable innebär att man gör objekt av sin klass jämförbara med andra och att det därmed antas existera en naturlig ordning
Läs merChapter 4: Writing Classes/ Att skriva egna klasser.
Chapter 4: Writing Classes/ Att skriva egna klasser. I dessa uppgifter kommer du att lära dig om hur man definierar egna objekt genom att skriva klasser. Detta är grunden för att förstå objekt orienterad
Läs merKomponenter med COM (och COM+/VC++ 7.0)
MÄLARDALENS HÖGSKOLA Komponenter med COM (och COM+/VC++ 7.0) Med Visual C++ 7.0 COM-komponent EI0230 Komponentbaserad applikationsutveckling oktober 2003 Om denna sammanfattning Denna sammanfattning innehåller
Läs merArv innebär att man skapar en ny klass (subklass) utifrån en redan existerande klass (superklass, basklass).
3 Arv och gränssnitt 3.1 Vad innebär arv? Ett objektorienterat språk bygger på att programmeraren ges möjligheten att modellera verkligheten med hjälp av objekt. Objekt låter sig definieras i form av klasser.
Läs mer1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna.
1 Uppgift 1 Klassen Company Banken FinanceTrust som tidigare bara haft privatpersoner som kunder vill nu bygga ut sitt datasystem så att även företag kan registreras som kunder. Skriv klassen Company som
Läs merAnmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper
Tentamen Programmeringsteknik I 2017-03-16 Skrivtid: 0800 1300 Tänk på följande Skriv läsligt. Använd inte rödpenna. Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer
Läs merLaboration 1 - Grunderna för OOP i Java
Uppdaterad: 2006-08-31 Laboration 1 - Grunderna för OOP i Java Inledning Laborationen går ut på att lära sig grunderna för objektorienterad programmering, samt motsvarande språkkonstruktioner i Java. Labben
Läs merOOP Objekt-orienterad programmering
OOP F9:1 OOP Objekt-orienterad programmering Föreläsning 9 Arv och klasshierarkier Polymorfism OOP F9:2 Djur - String namn - int vikt + String getnamn() + int getvikt() + void ökavikt(int x) Ko - int mjölkvolym
Läs merTDDC76 - Programmering och Datastrukturer
TDDC76 - Programmering och Datastrukturer Objektorientering - Klasser Eric Elfving Institutionen för datavetenskap 1 / 20 Återblick struct struct är bra att ha för att skapa aggregat - slå ihop flera data
Läs merTDIU01 Programmering i C++
TDIU01 Programmering i C++ Föreläsning 6 - Klasser Eric Elfving, eric.elfving@liu.se Institutionen för datavetenskap (IDA) Avdelningen för Programvara och system (SaS) Klasser När vi skapade vår lista
Läs merIntroduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014
Introduktion till Datalogi DD1339 Föreläsning 2 22 sept 2014 Namn Fält1 Fält2 Fält3 Metod1 Metod2 Metod3 Metod4 public class { public class { Åtkomst, public betyder fullt tillgänglig utifrån public
Läs merObjektorienterad programmering Föreläsning 5
Objektorienterad programmering Föreläsning 5 Copyright Mahmud Al Hakim mahmud@dynamicos.se www.webbacademy.se Agenda UML Övning Mer om metoder Standardklassen String Konstruktorer Överlagrade metoder Standardklassen
Läs merUML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.
Översikt Klasshierarkier UML klassdiagram Relation mellan klasser mellan klasser och objekt Association ning ing andling Programmering tillämpningar och datastrukturer 2 UML UML Unified Modeling Language
Läs merVariabler som hör till enskilda objekt. Deklareras på översta nivån i klassen och i regel som private.
Tentamen Programmeringsteknik I 2013-06-14 med lösningar 1. Svara kortfattat på följande: a) Vad är en instansvariabel? Variabler som hör till enskilda objekt. Deklareras på översta nivån i klassen och
Läs merJohan Karlsson Datavetenskap för teknisk kemi, 10p, moment 1 Datavetenskap Umeå Universitet. Tentamen
Tentamen för teknisk kemi, 10p, moment 1 29 november 1999 Skrivtid 9-15 Hjälpmedel: av följande böcker. - U. Bilting och J. Skansholm: Vägen till C - A. Kelley & I. Pohl: A Book on C Maxpoäng: Gräns för
Läs merProgrammera i C Varför programmera i C när det finns språk som Simula och Pascal??
Programmera i C Varför programmera i C när det finns språk som Simula och Pascal?? C är ett språk på relativt låg nivå vilket gör det möjligt att konstruera effektiva kompilatorer, samt att komma nära
Läs merLösningsförslag övning 2.
Objektorienterad programmering, Z1 Lösningsförslag övning 2. Uppgift 1. public class SIUnits { public static double yardspermeter = 1.093613; public static double poundperkilo = 2.204623; public static
Läs merFöreläsning 8 Programmeringsteknik och Matlab DD1312. Klassmetod. Egen modul
Föreläsning 8 Programmeringsteknik och Matlab DD1312 er, Self Metoderna:, av metoder, Det är en metod som tillhör klassen och inte objektet. class Skylt(object): antal=0 def init (,r):.reklam=r def antal():
Läs merF2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander
F2 Datatyper och variabler ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Datatyper Java är ett starkt typat språk Varje slags data har en datatyp Datatyp Javasyntax Exempel Teckensträng
Läs merObjekt och referenser
Objekt och referenser Antag att vi har följande enkla klass: public class Person { private String namn; private String adress; private String personnummer; public Person() { namn = NN ; adress = ; personnummer
Läs merDatatyper. Programmering. Att definiera datatyper i Java. Laddade partiklar. (x,y) (Rx,Ry) hh.se/db2004
Programmering hh.se/db2004 Föreläsning 11: Objektorienterad programmering - att definiera datatyper Verónica Gaspes www2.hh.se/staff/vero www2.hh.se/staff/vero/programmering Datatyper Hittills Vi har lärt
Läs merAnmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper
Tentamen Programmeringsteknik I 2016-03-17 Skrivtid: 1400 1900 Tänk på följande Skriv läsligt. Använd inte rödpenna. Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer
Läs merKlassdeklaration. Metoddeklaration. Parameteröverföring
Syntax: Class Declaration Modifier Class Body Basic Class Member Klassdeklaration class Class Member Field Declaration Constructor Declaration Method Declaration Identifier Class Associations Motsvarar
Läs merObjektorienterad programmering
Objektorienterad programmering Föreläsning 7 Copyright Mahmud Al Hakim mahmud@webacademy.se www.webacademy.se Agenda Konstanter och readonly Statiska klasser Standardklassen Math Parameteröverföring Referensen
Läs merTypkonvertering. Java versus C
Typer Objektorienterad programmering E Typkonvertering Typkonvertering Satser: while, for, if Objekt Föreläsning 2 Implicit konvertering Antag att vi i ett program deklarerat int n=3; double x = 5.2; Då
Läs merEDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.
EDAA20 Programmering och databaser Mål komprimerat se kursplanen för detaljer Läsperiod 1 7.5 hp anna.aelsson@cs.lth.se http://cs.lth.se/edaa20 Mer information finns på kursens webbsida samt på det utdelade
Läs merDet finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.
Tentamen Programmeringsteknik I 2015-06-11 Skrivtid: 08:00 13:00 Hjälpmedel: Java-bok Tänk på följande Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.
Läs merProgrammering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.
Programmering med Java Programmering med Java Programspråket Java Källkodsexempel Källkod Java API-exempel In- och utmatning Grunderna Ann Pan panda@nada.kth.se Rum 1445, plan 4 på Nada 08-7909690 Game.java
Läs merDagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?
Programmeringsteknik och Matlab Övning 4 Dagens program Övningsgrupp 2 (Sal Q22/E32) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d1312
Läs merEnkla variabler kontra referensvariabel
Föreläsning 6 Mer om klasser och objekt Föreläsning 6 Mer om klasser och objekt Enkla variabler kontra referensvariabel En variabel är ett namngivet minnesutrymme i datorns primärminne. En variabel som
Läs merAnmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper
Tentamen Programmeringsteknik I 2017-10-23 Skrivtid: 0800 1300 Tänk på följande Skriv läsligt. Använd inte rödpenna. Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer
Läs merTDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU
TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning Generiska klasser Undantag Interface Nästlade klasser 1 Problem:
Läs merF8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander
F8 - Arv ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Arv och subklasser Klasser innehåller attribut och beteenden En subklass ärver dessa från föräldern Detta ger: Återanvänd kod
Läs merFöreläsning 6. Mer om klasser och objekt. Enkla variabler kontra referensvariabel. Omslagsklassen Integer. Referensvariabler
Enkla variabler kontra referensvariabel En variabel är ett namngivet minnesutrymme i datorns primärminne. Föreläsning 6 Mer om klasser och objekt En variabel som används för att representera en primitiv
Läs merTentamen ID1004 Objektorienterad programmering October 29, 2013
Tentamen för ID1004 Objektorienterad programmering (vilande kurs), 29 oktober 2013, 9-13 Denna tentamen examinerar 3.5 högskolepoäng av kursen. Inga hjälpmedel är tillåtna. Tentamen består av tre sektioner.
Läs merNedan skapar vi klassen Person innehållande datamedlemmar för förnamn, efternamn, ålder, längd och vikt:
8. Objektorientering Skälet till att C++ är ett av de mest använda programspråken är att det är objektorienterat. Detta bygger vidare på begreppet struct (ursprungligen från språket C som inte är objektorienterat),
Läs merFöreläsning 8 - del 2: Objektorienterad programmering - avancerat
Föreläsning 8 - del 2: Objektorienterad programmering - avancerat Johan Falkenjack johan.falkenjack@liu.se Linköpings universitet Sweden December 4, 2013 1 Innehåll Arv och andra viktiga begrepp Abstrakta
Läs merÖversikt MERA JAVA OCH ECLIPSE. Uttryck och tilldelning. Uttryck och tilldelning. Uttryck och tilldelning. Uttryck och tilldelning
Översikt Uttryck i tilldelningssatser Typer och typomvandling Klasser Metoder Konstanter Eclipse-tips MERA JAVA OCH ECLIPSE Institutionen för datavetenskap Programmering 1 Rita Kovordányi 2 public class
Läs merFöreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc
Föreläsning 5 (6) Metoder Metoder Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc Metoder Deklarera public void setnamn(string n) Åtkomstmodifierare Returtyp
Läs merTentamen Programmeringsteknik II Skrivtid: Hjälpmedel: Java-bok (vilken som helst) Skriv läsligt! Använd inte rödpenna!
Tentamen Programmeringsteknik II 2014-01-09 Skrivtid: 0800-1300 Hjälpmedel: Java-bok (vilken som helst) Tänk på följande Skriv läsligt! Använd inte rödpenna! Skriv bara på framsidan av varje papper. Börja
Läs merObjektorienterad programmering Föreläsning 6. Mer om klasser och typer Namnrymder Inkapsling Synlighet Statiska variabler Statiska metoder
Objektorienterad programmering Föreläsning 6 Copyright Mahmud Al Hakim mahmud@dynamicos.se www.webbacademy.se Agenda Mer om klasser och typer Namnrymder Inkapsling Synlighet Statiska variabler Statiska
Läs merF5: Högnivåprogrammering
F5: Högnivåprogrammering Parameteröverföring Koppling mellan låg- och högnivåprogrammering Lokala variabler Heapen Datatyper 1 Subrutin, parameteröverföring: 1(3) Via register genom värde Skicka data via
Läs merF5: Högnivåprogrammering
1 F5: Högnivåprogrammering Parameteröverföring Koppling mellan låg- och högnivåprogrammering Lokala variabler Heapen Datatyper 1 Subrutin, parameteröverföring: 1(3) Via register genom värde Skicka data
Läs merEDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Om att lära sig programmera. Föreläsning 1-2 Innehåll.
EDAA20 Programmering och databaser Mål komprimerat se kursplanen för detaljer Läsperiod 1 7.5 hp anna.axelsson@cs.lth.se http://cs.lth.se/edaa20 Mer information finns på kursens webbsida samt på det utdelade
Läs merpublic interface Skrivbar { void skriv(); } public class Punkt implements Skrivbar { public double x; public double y;
public interface Skrivbar { void skriv(); public class Punkt implements Skrivbar { public double x; public double y; public Punkt(double xx, double yy) { x = xx; y = yy; public Punkt() { @Override public
Läs merProgrammering II (ID1019) :00-12:00
ID1019 Johan Montelius Programmering II (ID1019) 2014-01-16 09:00-12:00 Förnamn: Efternamn: Instruktioner Du får inte ha något materiel med dig förutom skrivmateriel. Mobiler etc, skall lämnas till tentamensvakten.
Läs mer729G75: Programmering och algoritmiskt tänkande. Tema 3, föreläsning 2
729G75: Programmering och algoritmiskt tänkande Tema 3, föreläsning 2 Översikt Vanliga mönster när man designar en klass Klass-diagram Exempel Arv i Python Egna klasser använd som egna datatyper, men även
Läs merTDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU
TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Mer om Interface Generiska klasser Undantag Nästlade klasser 1
Läs merTentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34
Tentamen Datalogi I, grundkurs med Java 10p, 2D4112, 2002-2003 Lördagen den 30 november 2002 kl 9.00 14.00, salar E33, E34 Inga hjälpmedel 30 poäng ger säkert godkänt, 40 poäng ger betyg 4 50 poäng ger
Läs merProgrammering A. Johan Eliasson johane@cs.umu.se
Programmering A Johan Eliasson johane@cs.umu.se 1 Jag Undervisar mest grundläggande programmering på Institutionen för datavetensakap Applikationsutveckling för iphone Applikationsutveckling i Java Datastrukturer
Läs mer725G61 - Laboration 5 Grundläggande objektorientering. Johan Falkenjack
725G61 - Laboration 5 Grundläggande objektorientering Johan Falkenjack November 26, 2013 1 Inledning I labb 1-3 tittade vi på de grundläggande byggstenarna i programmering. Vi lärde oss om variabler, styrstrukturer
Läs merPROGRAMMERINGSTEKNIK TIN212
Data och Informationsteknik / Computer Science and Engineering Chalmers University of Technology and University of Gothenburg Robin Adams Göteborg 8 June 2018 PROGRAMMERINGSTEKNIK TIN212 Dag: Fredag Datum:
Läs mer