Objekt Orienterad Programmering och AS3 PDF Skriv ut Skicka sidan
Skrivet av Calle Mowday   
2009-04-30 09:00
Artikelindex
Objekt Orienterad Programmering och AS3
Del 2
Del 3
Del 4
Del 5
Alla sidor

OOP står för Object-oriented programming. OOP är ett sätt att programmera på som använder sig av objekt och andra fancy ord som vi ska lära oss här nu!
I denna kursen leker vi gud och ska skapa en massa olika saker i AS3 med OOP tänk.


Jag använder mig av Flashdevelop och Flex SDK:n i mina exempel och antar att ni gör det med! Detta är ABSOLUT inget krav!!!

Nu slänger vi oss in i detta och leker gud!!!
För det första, skapa ett nytt AS3 projekt som vi döper till ”AS3 OOP”.
Klasser
På första dagen skapade Gud klasserna!
En klass är själva ritningen till ett objekt. En klass definerar (berättar) hur ett objekt ska se ut, vad den innehåller och hur den ska bete sig.
Därför börjar vi med en klass som ska heta Däggdjur.
Skapa en ny fil som heter Daggdjur.as.
Skriv in följande kod:
package  
{

    /**
     * Ett däggdjur
     * @author Carl Mowday
     */
    public class Daggdjur
    {

        public function Daggdjur()
        {
        }

    }
}


Nu har vi skapat oss en klass. Lätt som en plätt ju!!!
Vi har alltså nu skapat vår ritning av ett däggdjur, vad den innehåller och vad den kan göra osv.
Om vi tittar på vår kod uppifrån så går vi igenom rad för rad:
package = Package är det paket som denna klassen ligger i. Så länge filerna ligger på root nivå kan vi ignorera denna så länge så tar vi det senare!
public class Daggdjur = Berättar att här kommer en klass som heter Daggdjur. Vi har satt en modifier (kommer till detta snart) som är public.
public function Daggdjur() = Konstruktorn. Nu kommer ännu ett nytt ord. Konstruktorn är den funktion som körs varje gång man skapar ett nytt objekt. Du vet alltså, 100% säkert, att denna funktionen kommer att köras före alla andra! Varje gång!
Då går vi vidare… STOPP STOPP STOPP! Vad är en modifier?
En modifier är ett keyword som används varje gång du skapar något i en klass. Det kan vara en funktion eller en variabel.
I vårt fall har vi en modifier på klassen (public class Daggdjur) och en på konstruktorn (public) function Daggdjur()).
En modifier säger helt enkelt vilka det är som får se och använda den här saken. Det finns 4 olika modifiers:
public = Alla kommer åt den och kan använda klassen
private = Bara klassen själv kommer åt denna, ingen utifrån når den!
protected = Vi väntar med denna!
internal = Och vi väntar med den med…
Eftersom vi har satt public på både konstruktorn och klassen kan alla skapa ett objekt av den här klassen.
Ni kommer förstå det här med modifiers mer snart!


Objekt
På den andra dagen skapade gud objekt!
Ett objekt är helt enkelt produkten av ritningen. Man kan skapa hur många objekt som helst av samma klass. Och ändrar man i klassen ändrar man på alla objekten samtidigt.
I våran Main.as byter vi ut all kod mot:
package
{
    import flash.display.Sprite;
    import flash.events.Event;

    /**
    * Main klassen, körs varje gång vi testar vår film
    * @author Carl Mowday
    */

    public class Main extends Sprite
    {
        public function Main ()
        {
            var schtefan:Daggdjur = new Daggdjur();
        }
    }
}


Så där ja! Nu går vi igenom denna koden:
import flash.display.Sprite; = Säger att vi kommer använda oss av klassen Sprite I vår kod, och den hämtas från flash.display. Import används varje gång vi ska använda en klass som inte ligger på root nivån. Eftersom Main.as och Daggdjur.as ligger i samma mapp (rooten) behöver vi inte importera den.
extends Sprite = Väntar vi med…
public function Main() = Konstruktorn, precis som konstruktorn i daggdjur!
var schtefan:Daggdjur = new Daggdjur(); = Här skapade vi ett nytt objekt av klasssen Daggdjur. Objektet heter ”schtefan”.
Om vi ville kunde vi skapa ett till objekt genom att skriva
var schtefansHund:Daggdjur = new Daggdjur();

Då har vi två objekt av samma klass. En heter schtefan och en heter schtefansHund.

Än så länge kan de inte göra något, men det ska vi ändra på nu!

Funktioner och variabler
Vi öppnar Daggdjur.as igen. Nu ska vi lägga till lite grejer på den här!
Det första vi ska göra är att lägga till den egenskap (property).
Egenskaper defineras med variabler, skrivs som var i AS3. Egenskapen lägger vi utanför konstruktorn och vi använder modifiern private för att skapa den.
Vi skapar en privat egenskap som heter ”_birthday”.
Vi gör den privat för att vi inte vill att någon utifrån ska kunna ändra på den.
Koden ser ut så här:
package
{
    /**
    * Ett däggdjur
    * @author Carl Mowday
    */

    public class Daggdjur
    {
        private var _birthday:Date;

        public function Daggdjur()
        {
        }

    }
}


Som ni ser lade jag ett underscore framför namnet (_birthday). Detta är standard inom många programmerings språk, så väl inom AS3. Alla privata variabler bör defineras med ett underscore framför, för att tydligt visa att denna egenskapen är en privat egenskap och inte privat!
Detta är inte ett måste alls! Jag har lärt mig på detta sättet och anser att man bör följa det, men det är helt upp till dig!
I konstruktorn nu, funktionen som körs när ett objekt startar, spara vi nu ner datumet. På så sätt vet vi när de föddes!
Vi ska också skapa en public funktion, alltså en funktion som alla kan nå.
Vi kallar den för shoutOutYourBirthday och det enda den ska göra är att skicka ut sitt födelsedatum i trace loggen. Koden ser ut så här:
package
{
    /**
    * Ett däggdjur
    * @author Carl Mowday
    */
    public class Daggdjur
    {
        private var _birthday:Date;

        public function Daggdjur()
        {
            _birthday = new Date();
        }

        public function shoutOutYourBirthday():void
        {
            trace(_birthday);
        }

    }
}


Nu kan vi kalla på denna funktionen från Main.as. Om vi gör det på schtefan objektet kommer det synas när han föddes i traceloggen.
Skriv detta i Main.as och testa filmen!
package
{
    import flash.display.Sprite;
    import flash.events.Event;

    /**
    * Main klassen, körs varje gång vi testar vår film
    * @author Carl Mowday
    */
    public class Main extends Sprite
    {

        public function Main()
        {
            var schtefan:Daggdjur = new Daggdjur();
            trace("Schtefan föddes:");
            schtefan.shoutOutYourBirthday();
        }

    }
}


I din trace ska det nu stå, t.ex.:
Schtefan föddes:
Thu Apr 30 14:16:23 GMT+0200 2009

Det var början på denna kursen! Del 2 kommer prata mer om funktioner, variabler och något som heter Black Box theory!
Schpännande!!!

Lägg till kommentar


Medlemmar


Members Online: 0

Senaste registrerade

LisaRaichand : 22 april 2012 19:55pilu : 31 januari 2012 09:58Gostship99 : 07 januari 2012 19:37Director : 18 november 2011 05:44Dahlback : 17 november 2011 16:28mikwonwheels : 14 november 2011 13:20Kviddis : 04 oktober 2011 19:53buddha1966 : 25 september 2011 14:22idesign : 20 september 2011 08:45TxT : 05 september 2011 11:07ApelG : 05 september 2011 11:04
Partners
Adobe user group
fdt5-logo
TechSmith
Lynda user group
Apress user group
O´reilly user group
Peachpit user group
Friends Of Ed
Manning user group


Senaste blogginläggen

Av: Danel
-20.02.2012
Av: Patric Jonsson
-27.01.2012
Av: Patric Jonsson
- 3.01.2012
Av: Patric Jonsson
-29.11.2011
Av: Danel
-26.11.2011
Av: Patric Jonsson
-14.11.2011
Av: Patric Jonsson
- 8.11.2011
Av: Danel
- 7.11.2011
Av: Patric Jonsson
-27.09.2011

Senaste kommentarer

Senaste trådarna

Av Hallon
- 08/05/2012
Av goldensebbe
- 06/04/2012
Av Hallon
- 29/03/2012
Av buddha1966
- 06/03/2012
Av buddha1966
- 29/02/2012
Av Wide Circle
- 20/02/2012
Av zocstyle
- 15/02/2012
Av ufoalf30
- 05/01/2012
Av peterdavidsson
- 08/12/2011
Av JohnPaulie
- 03/12/2011
Av coffaldo
- 17/11/2011
Av buddha1966
- 05/11/2011
Av buddha1966
- 03/11/2011

Blogkalender

  • 2012 (3)
  • 2011 (37)
  • 2010 (85)
  • 2009 (18)
  • Vem är online

    Vi har 7 besökare online

    Relaterande artiklar

    RocketTheme Joomla Templates