OOP. vs procedural programming 2011-12-07. Design av interaktiv multimedia



Relevanta dokument
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.

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

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

// //Constructor public function Main_Playground() { init(); }

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

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

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

SI-pass 4. Johan Brook och Jesper Persson. 25 september Diskutera och svara på om påståendena nedan är äkta sanningar eller listiga lögner.

Vad kännetecknar en god klass. Vad kännetecknar en god klass. F12 Nested & Inner Classes

Modeller, Objekt och Klasser

Att skriva till och läsa från terminalfönstret

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

Kopiering av objekt i Java

DAT043 - föreläsning 8

DAT043 - Föreläsning 7

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

Objektorientering - Arv och polymorfi. Eric Elfving Institutionen för datavetenskap

F4. programmeringsteknik och Matlab

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

TDDC76 - Programmering och Datastrukturer

Outline. Objektorienterad Programmering (TDDC77) En frukt har ett namn. Man kan lägga en frukt i en korg... Hashing. Undantag. Ahmed Rezine.

Objektorienterad Programmering (TDDC77)

Exemple på Tentauppgifter Webbprogrammering

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

Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel

Föreläsning 4. ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista

Föreläsningsmaterial (Arv) Skrivet av Andreas Lund

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

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

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson

Abstrakt datatyp. -Algoritmer och Datastrukturer- För utveckling av verksamhet, produkter och livskvalitet.

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

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

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

Objektorienterad Programkonstruktion. Föreläsning 3 7 nov 2016

E02 "The Review" Föreläsning 2, HT2013 Grunderna, repetition. Johan Leitet. Kurs: 1dv403 Webbteknik I

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

JavaScript. Innehåll. Historia. Document object model DHTML. Varför Javascript?

Tentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:

Detaljbeskrivning av Player

Föreläsning 2, vecka 8: Repetition

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

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

UML. Översikt UML. Relationer mellan klasser. A är ett aggregerat av B:n. Kontor aggregat av Enheter. 12 olika diagramtyper, bl.a.

Classes och Interfaces, Objects och References, Initialization

ID1004 Laboration 4, November 2012

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

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

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

Lösningsförslag till exempeltenta 2

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

Länkade strukturer. (del 2)

Föreläsning 5-6 Innehåll

Laboration 1 - Grunderna för OOP i Java

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

Arv Murach s: kap 14

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

Subtyping, co- och contra-variance. Objekt-orienterad programmering och design Alex Gerdes, 2016

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

Generisk klass med typparameter Inre klass - ListIterator

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

Föreläsning 3. Stack

Föreläsning 4. ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista Läsanvisningar och uppgifter

Tentamen Programmering fortsättningskurs DIT950

Klasshierarkier - repetition

Objektorientering: Lagring och livstid

TDDC77 Objektorienterad Programmering

Fakulteten för ekonomi, kommunikation och IT. Corba. Datum: Mathias Andersson

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

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: Tid: kl

Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:

EDA095 JavaScript. Per Andersson. Maj 4, Lund University Per Andersson EDA095 JavaScript Maj 4, / 23

Lösningsförslag till exempeltenta 1

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h

TENTAMEN OOP

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

Konstruktion av klasser med klasser

FactoryCast HMI. Premium & Quantum PLC. Applets

Programmering B med Visual C

Lösningar för tenta 3 DAT043,

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016

Objektorienterad Programmering (TDDC77)

Tentamen ID1004 Objektorienterad programmering October 29, 2013

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

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

Lösningsförslag, tentamen FYTA11 Javaprogrammering

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

Klassen BST som definierar binära sökträd med tal som nycklar och enda data. Varje nyckel är unik dvs förekommer endast en

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

På den här övningen ska vi träna på att förflytta en figur med hjälp av piltangenterna.

Malmö högskola 2008/2009 CTS

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

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Lösningar för tenta 2 DAT043,

public class Main extends MovieClip { var hillpage:hillpage; var ifpage:ifpage;

Programmeringsteknik II - HT18. Föreläsning 6: Grafik och händelsestyrda program med användargränssnitt (och Java-interface) Johan Öfverstedt

Transkript:

OOP Design av interaktiv multimedia vs procedural programming Vokabulär: Class Properties Methods Encapsulation Getters/setters Inheritance och composition Interface Anger vem/vad som har tillgång till properties och metoder. Public (överallt) Private (inom klassen) Protected (inom samma klass och ärvande klasser) Internal (inom samma package) Static (hör till klassen istället för instanser) Ska anges vid variabeldeklaration och när du skriver egna metoder! public var myint:int; protected var myint:int; internal var myint:int; static var myint:int; private var _myotherint:int; Notera _ private function myfunction():void { Getter lämnar ut värdet på en privat variabel. public function get myint():int { return _myint; Setter sätter ett nytt värde på en privat variabel. public function set myint(newvalue:int):void { _myint = newvalue; 1

public function get score():int { return _score; public function set score(n:int):void { if(n < 10) { _score = n; package { import flash.display.movieclip; public class Game extends MovieClip { public var player:player; setter player.score = 5; Constants har ett fast värde som inte kan ändras. Ge värdet vid deklarationen (deklareras globalt). Använd inte var. Namnges alltid med VERSALER. inget var! const MY_VALUE:int = 5; trace(player.score); getter Nås med dot-notation: myclass.my_value; En klass ärver egenskaper från en annan klass. Composition säger att ett objekt är byggt av vissa objekt, snarare än att det är ett objekt. public class MyClass extends MovieClip { public function MyClass() { MovieClip i sin tur ärver också: MovieClip Sprite DisplayObjectContainer InteractiveObject DisplayObject EventDispatcher Object public class Seagull { private var _wing:wing; public function Seagull() { _wing = new Wing(25); public class Wing { private var _size:int; public function Wing(size:int) { _width = _size; public function get width():int { return _width; Tillåter gemensamma metoder utan att använda inheritance. room Player Room Object T.ex. IEventDispatcher som har addeventlistener och removeeventlistener. highlow pig hangman HighCardLowCard Dice HangmanSVG En klass kan implementera flera interface (till skillnad från inheritance som bara går en gång). CardHands DiceSVG public class Main implements IEventDispatcher Cards Decks 2

Container XMLLoader Menu LoadingDisplay GameEngine OptionsDisplay Highscore ErrorMsg Highscore GameSoundEffect GameMusic CImages Player Images LoadingDisplay Compiler error: Uppstår när din Flashapplikation publiceras. Runtime error: Uppstår efter att din fil publicerats, under tiden som den används. Varningar: Uppstår under publicering, men stoppar inte publikationen. Applikationen kan fortfarande fungera. Compiler errors: Error #1013: The private attribute may be used only on class property definitions. Error #1021: Duplicate function definition. Error #1051: Return value must be undefined. Error #1059: Property is read-only. Error #1120: Access of undefined property %s. Run-time errors: Error #1009: Cannot access a property or method of a null object reference Error #1065: Variable %1 is not defined Error #2047: Security sandbox violation: %1: %2 cannot access %3. Error #1071: The Stage class does not implement this property or method. Error #2047: Security sandbox violation Flash har inbyggda säkerhetsgränser en s.k. sandbox (sandlåda). Du får aldrig sandbox violation om du kör filerna lokalt på datorn. Löses med en crossdomain-fil (crossdomain.xml) i root-mappen: <?xml version="1.0"?> <cross-domain-policy> <allow-access-from domain="*.example.com" /> <allow-access-from domain="www.friendofexample.com" /> <allow-access-from domain="192.0.34.166" /> </cross-domain-policy> Step over: gå till nästa rad kod. Step in: gå till nästa rad kod om en funktion används så hoppar debuggern in i funktionen och fortsätter där. Step out: hoppar till det ställe där funktionen returnerar ett värde. Step over Step in Step out 3

Lägg in en brytpunkt (breakpoint) där du vill att koden ska stanna. Används för att testa och hantera eventuella fel som uppstår. try { //Här testar vi något catch (error:error) { //Här anger vi vad som händer om det blev fel Är en försäkring att applikationen inte lägger av vid ett visst runtime error. Display list: Stage Child1 (t.ex. MovieClip) Child1:1 Child2 Child2:1 (t.ex. Button) capture phase bubbling phase Child2:2 target phase addeventlistener(type:string, listener:function, usecapture:boolean = false) Capture phase lyssnar på föräldern. T.ex.: myparent.addchild(mychild); mychild.addeventlistener(,, true); Bubbling phase lyssnar på barnet. T.ex.: myparent.addchild(mychild); myparent.addeventlistener(,, false); Bubbling phase är default. Events implementeras egentligen med textsträngar (constants). MouseEvent.CLICK = click KeyboardEvent.KEY_DOWN = keydown Det går att dispatcha (skicka iväg) och lyssna efter egna textsträngar: dispatchevent(new Event( myownevent")); addeventlistener( myownevent, myowneventhandler); 4

package { import flash.events.event; public class CustomEvent extends Event { public static const CUSTOM:String = "custom"; public var arg:*; Här går att lägga in egna parametrar public function CustomEvent(type:String, customarg:*=null, bubbles:boolean=false, cancelable:boolean=false) { super(type, bubbles, cancelable); this.arg = customarg; public override function clone():event { return new CustomEvent(type, arg, bubbles, cancelable); public override function tostring():string { return formattostring("customevent", "type", "arg", "bubbles", "cancelable", "eventphase"); http://www.adobe.com/support/flash/ Exempel hittestobject() Skapa ett nytt shared object: private var _myso:sharedobject; Hämta ett existerande SO/döp det nya: _myso = SharedObject.getLocal("TotalTimeAtThisPage"); Läs data från SO: _myint = _myso.data.mynumber; Lägg till data på SO: _myso.data.mynumber = 2; Spara data lokalt: _myso.flush(); Stäng ditt SO: _myso.close(); En array är en samling värden. Alla värden tilldelas indexnummer (från 0). Deklareras på flera sätt: private var _arr:array = new Array(); private var _arr:array = []; private var _arr:array = [ Hello, world, again,! ]; for (var i:int = 0; i < _arr.length; i++) { trace(_arr[i]); _arr[0] = Hello ; _arr.push( world ); 0 1 2 3 Hello world again! 5

DisplayObject är basklassen för alla objekt som kan placeras i displaylistan (d.v.s. på scenen). GC städar bort objekt som inte längre används. DisplayObjectContainers är en typ av DisplayObject som kan ha barn. Typer av DisplayObjectContainers: Stage Sprite (som ett MC men utan tidslinje) Loader (laddar externa objekt till display list) MovieClip Bara objekt som är tomma tas bort töm därför dina objekt så fort de inte behövs! delete(o:object); tar bort objekt som inte används. Sätt objektreferenser = null. Ta bort event listeners (removeeventlistener()). Stoppa animeringar. Ta bort timers. Flex För utvecklare Användargränssnitt Adobe AIR Desktopapplikationer (mac, windows, linux) Mobila enheter (ska läggas ner?) 3D Integrera webbkamera Streama live-video Animera filmer 6