Några frågor och svar från seminarium 3

  1. Vad menar man egentligen med objektorienterad programmering?

    Man menar användning av objekt, klasser och relationer mellan klasser i analys, design och programmering av datasystem. Hur sådan användning går till och vad som är poängen med den kan man bara få inblick i genom studier och erfarenhet. Studierna kan vara mer eller mindre intensiva, och ett sätt att snabbt få veta vad olika skribenter anser är det väsentliga i objektorientering är att kolla på nätet.

  2. Hur fungerar klassvariabler och metoder jämfört med instansvariabler och instansmetoder?

    En klassvariabel är gemensam för alla instanser av klassen. En offentlig klassmetod anropas genom att ange klassnamn.metodnamn() eller endast metodnamn om anropet sker inom klassen.

    Instansvariabeln är unik för objektet (en instans av en klass). Instansmetoden anropas med referensens identifierare utanför klassen. Inom andra instansmetoder i klassen kan metoden anropas med metodnamn() eller this.metodnamn() för att visa att det är "this" objekt det handlar om.

  3. Vad är ett objekt?

    Ett objekt är en instans av en klass. Ett objekt skapas med operatorn new.

    MinKlass mittObjekt = new MinKlass();
    
    givet klassen
    public class MinKlass{...
    
  4. Hur skiljer sig användningen av klassbibliotek mot användningen av headerfiler i AnsiC och C++?

    Att inkludera en header-fil i C/C++ kan liknas vid att importera en klass i Java, även om det finns avgörande skillnader. En inkluderad header-fil kopieras bokstavligen ihop med källkoden av en s.k. preprocessor. I Java är importering mer abstrakt och man behöver t.ex. inte fundera kring effekten av att importera ett paket på flera ställen.

    Klassbibliotektet som är knutet till Java version 1.4.x har ingen direkt motsvarighet i C/C++, där allt är knutet till en specific plattform.

  5. Kan variabler av t.ex. typen int få ett värde ur "minnnet" om den inte initialiseras eller får variabeln automatiskt värde 0? Vilket är det initiala värdet vid deklarering?

    Klassvariabler och instansvariabler av primitiv typ, t.ex. int, boolean, double får ett startvärde när de är deklarerade. Detta gäller inte lokala variabler.

  6. Kan int ges värdet null?

    Nej. Endast referenstyper kan ha värdet null.

  7. Vad är en konstruktor?

    Det är den specialmetod som anropas när ett objekt skapas med operatorn new, t.ex. i programsatsen

    new Test();
    
    anropas konstruktorn i nedanstående klass:
    public class Test{
        public Test(){ //Detta är konstruktorn och 
                       //här kan objektet initialiseras
        }              //
    }