enkle objekter

Embed Size (px)

Citation preview

  • 8/14/2019 enkle objekter

    1/39

    1

    Enkle objekter

    Enkle data-orienterte objekter felt instansiering

    navigering mellom objekter enkle (instans)metoder toString()-metoden

  • 8/14/2019 enkle objekter

    2/39

    2

    Hvordan knytte sammen datasom utgjr en enhet?

    Objekter lser et generelt problem:Hvordan knytte sammen data,som utgjr en enhet

    Sammenhrende datamed tabeller String[] navnetabell = {Hallvard, Trond};

    int[] kontornr = {115, 213};

    Vi trenger noe annet enn tabeller, somkan holde p ulike typer data p ngang!

    Hal.. Tro.

    115 213

    hrer sammen

  • 8/14/2019 enkle objekter

    3/39

    3

    Objekter

    Objekter kan samle data av ulike typer,p samme mte som tabeller kan samledata av samme type, men objekter har navngitte feltmed verdier av definerte

    typer, istedenfor heltallsindekser som tabeller objekter ligner p ark (eller visittkort), med feltene som

    variabler

    Ansatt

    String navn =

    int kontor =

  • 8/14/2019 enkle objekter

    4/39

    4

    Objekter

    Objekter brukes nr et fenomen kan beskrives med data som hrer sammen (over tid) prosesser har behov for behandle data som n enhet det finnes mange konkrete og gjerne observerbare ting som har

    essensielle strukturelle likheter alle X har Y

    nr man gjr Z trenger man en X Terminologi Begrepet klasse har flere betydninger

    Strukturen som er felles for alle instanser av et fenomen Settet med instanser som har essensielle likheter Java-mekanisme for knytte data (og metoder) sammn

    Begrepet objekteller instans brukes om n bestemt ting med en viss struktur og et konkret/spesifikt innhold

    Eksempel: Fenomenet ansatter noe generelt med faste data knyttet til seg: en klasse Dataene som beskriver den bestemte ansatte Hallvard, rom 115: et objekt

  • 8/14/2019 enkle objekter

    5/39

    5

    Objekter

    Eksempel: En klasse:

    Fenomenet ansatter noe generelt,som knytter samme spesifikke data,

    et navn og et romnr.:

    Et objekt:Dataene sombeskriver denbestemte ansatte

    Hallvard, rom 115

    Ansatt

    String navn

    int kontor

    #1: Ansatt

    String navn = Hallvard

    int kontor = 115

    instans

    av

  • 8/14/2019 enkle objekter

    6/39

    6

    Eksempler: Kurs

    kurskode navn

    fagansvarlig

    Noen problemer med denne modellen?

    Kurs

    String kode

    String navn

    String faglrer

    #1: Kurs

    String kode = TDT4100

    String navn = Objekt-orientert programmering

    String faglrer = Hallvard Trtteberg

  • 8/14/2019 enkle objekter

    7/39

    7

    Eksempler: CD-spor

    navn lengde

    pause

    Noen problemer med denne modellen?

    Spor

    String navn

    int lengde

    int pause

    #1: Spor

    String navn = The Kids are on High Street

    int lengde = 286

    int pause = 3

  • 8/14/2019 enkle objekter

    8/39

    8

    Objekter

    En klasse deklarerer strukturen til fenomenet, dvs.dataene som knyttes sammen Eksempel (i Ansatt.java):

    public class Ansatt {public String navn;public int kontor;

    }

    Ansatt-ark (kalles instanser)lages med new Ansatt()

    Felt leses og endres med .-notasjonen Ansatt ansatt = new Ansatt(); ansatt.navn = Hallvard

    if (ansatt1.navn == ansatt2.navn) { ... }

    Ansatt

    String navn =

    int kontor =

  • 8/14/2019 enkle objekter

    9/39

    9

    Objekter Eksempel:

    // i Ansatt.javapublic class Ansatt {public String navn;public int kontor;

    }// i Hovedprogram.javapublic class Hovedprogram {public static void main(String[] args) {

    Ansatt a1 = new Ansatt();a1.navn = Hallvard;a1.kontor = 115;Ansatt a2 = new Ansatt();a2.navn = Trond;a2.kontor = 213;System.out.println(a1.navn + sitter p + a1.kontor);System.out.println(a2.navn + sitter p + a2.kontor);

    }}

    String[] args

  • 8/14/2019 enkle objekter

    10/39

    10

    Objekter Eksempel:

    // i Ansatt.javapublic class Ansatt {public String navn;public int kontor;

    }// i Hovedprogram.javapublic class Hovedprogram {public static void main(String[] args) {

    Ansatt a1 = new Ansatt();a1.navn = Hallvard;a1.kontor = 115;Ansatt a2 = new Ansatt();a2.navn = Trond;a2.kontor = 213;System.out.println(a1.navn + sitter p + a1.kontor);System.out.println(a2.navn + sitter p + a2.kontor);

    }} #1: Ansatt

    String navn =

    int kontor = 0String[] args

    Ansatt a1 =

  • 8/14/2019 enkle objekter

    11/39

    11

    Objekter Eksempel:

    // i Ansatt.javapublic class Ansatt {public String navn;public int kontor;

    }// i Hovedprogram.javapublic class Hovedprogram {public static void main(String[] args) {

    Ansatt a1 = new Ansatt();a1.navn = Hallvard;a1.kontor = 115;Ansatt a2 = new Ansatt();a2.navn = Trond;a2.kontor = 213;System.out.println(a1.navn + sitter p + a1.kontor);System.out.println(a2.navn + sitter p + a2.kontor);

    }} #1: Ansatt

    String navn = Hallvard

    int kontor = 0String[] args

    Ansatt a1 =

  • 8/14/2019 enkle objekter

    12/39

    12

    Objekter Eksempel:

    // i Ansatt.javapublic class Ansatt {public String navn;public int kontor;

    }// i Hovedprogram.javapublic class Hovedprogram {public static void main(String[] args) {

    Ansatt a1 = new Ansatt();a1.navn = Hallvard;a1.kontor = 115;Ansatt a2 = new Ansatt();a2.navn = Trond;a2.kontor = 213;System.out.println(a1.navn + sitter p + a1.kontor);System.out.println(a2.navn + sitter p + a2.kontor);

    }} #1: Ansatt

    String navn = Hallvard

    int kontor = 115String[] args

    Ansatt a1 =

  • 8/14/2019 enkle objekter

    13/39

    13

    Objekter Eksempel:

    // i Ansatt.javapublic class Ansatt {public String navn;public int kontor;

    }// i Hovedprogram.javapublic class Hovedprogram {public static void main(String[] args) {

    Ansatt a1 = new Ansatt();a1.navn = Hallvard;a1.kontor = 115;Ansatt a2 = new Ansatt();a2.navn = Trond;a2.kontor = 213;System.out.println(a1.navn + sitter p + a1.kontor);System.out.println(a2.navn + sitter p + a2.kontor);

    }} #1: Ansatt

    String navn = Hallvard

    int kontor = 115

    #2: Ansatt

    String navn =

    int kontor = 0

    String[] args

    Ansatt a1 =

    Ansatt a2 =

  • 8/14/2019 enkle objekter

    14/39

    14

    Objekter Eksempel:

    // i Ansatt.javapublic class Ansatt {public String navn;public int kontor;

    }// i Hovedprogram.javapublic class Hovedprogram {public static void main(String[] args) {

    Ansatt a1 = new Ansatt();a1.navn = Hallvard;a1.kontor = 115;Ansatt a2 = new Ansatt();a2.navn = Trond;a2.kontor = 213;System.out.println(a1.navn + sitter p + a1.kontor);System.out.println(a2.navn + sitter p + a2.kontor);

    }} #1: Ansatt

    String navn = Hallvard

    int kontor = 115

    #2: Ansatt

    String navn = Trond

    int kontor = 0

    String[] args

    Ansatt a1 =

    Ansatt a2 =

  • 8/14/2019 enkle objekter

    15/39

    15

    Objekter Eksempel:

    // i Ansatt.javapublic class Ansatt {public String navn;public int kontor;

    }// i Hovedprogram.javapublic class Hovedprogram {public static void main(String[] args) {

    Ansatt a1 = new Ansatt();a1.navn = Hallvard;a1.kontor = 115;Ansatt a2 = new Ansatt();a2.navn = Trond;a2.kontor = 213;System.out.println(a1.navn + sitter p + a1.kontor);System.out.println(a2.navn + sitter p + a2.kontor);

    }} #1: Ansatt

    String navn = Hallvard

    int kontor = 115

    #2: Ansatt

    String navn = Trond

    int kontor = 213

    String[] args

    Ansatt a1 =

    Ansatt a2 =

  • 8/14/2019 enkle objekter

    16/39

    16

    Referanser til objekter

    Klassenavn kan/m brukes i deklarasjoner Ansatt a = new Ansatt();// a kan ikke referere til noe annet enn Ansatt-instanser

    Variabler, parametre og felt kan referere til objekter void setNavn(Ansatt a, String s) {

    a.navn = s;}

    Metoder kan returnere objekter Ansatt lavesteKontornr(Ansatt a1, Ansatt a2) {

    return (a1.kontor < a2.kontor ? a1 : a2);}

    Flere variabler kan referere til samme objekt Ansatt a1 = new Ansatt();

    a1.navn = Hallvard;Ansatt a2 = a1;a2.navn = Trond;a1.navn.equals(Hallvard) => false

    String navn =

    int kontor = 0Ansatt a1 =

  • 8/14/2019 enkle objekter

    17/39

    17

    Referanser til objekter

    Klassenavn kan/m brukes i deklarasjoner Ansatt a = new Ansatt();// a kan ikke referere til noe annet enn Ansatt-instanser

    Variabler, parametre og felt kan referere til objekter void setNavn(Ansatt a, String s)

    { a.navn = s;}

    Metoder kan returnere objekter Ansatt lavesteKontornr(Ansatt a1, Ansatt a2){ return (a1.kontor < a2.kontor ? a1 : a2);}

    Flere variabler kan referere til samme objekt Ansatt a1 = new Ansatt();

    a1.navn = Hallvard;Ansatt a2 = a1;

    a2.navn = Trond;a1.navn.equals(Hallvard) => false

    String navn = Hallvard

    int kontor = 0Ansatt a1 =

  • 8/14/2019 enkle objekter

    18/39

    18

    Referanser til objekter

    Klassenavn kan/m brukes i deklarasjoner Ansatt a = new Ansatt();// a kan ikke referere til noe annet enn Ansatt-instanser

    Variabler, parametre og felt kan referere til objekter void setNavn(Ansatt a, String s)

    { a.navn = s;}

    Metoder kan returnere objekter Ansatt lavesteKontornr(Ansatt a1, Ansatt a2){ return (a1.kontor < a2.kontor ? a1 : a2);}

    Flere variabler kan referere til samme objekt Ansatt a1 = new Ansatt();

    a1.navn = Hallvard;Ansatt a2 = a1;

    a2.navn = Trond;a1.navn.equals(Hallvard) => false

    String navn = Hallvard

    int kontor = 0Ansatt a1 =

    Ansatt a2 =

  • 8/14/2019 enkle objekter

    19/39

    19

    Referanser til objekter

    Klassenavn kan/m brukes i deklarasjoner Ansatt a = new Ansatt();// a kan ikke referere til noe annet enn Ansatt-instanser

    Variabler, parametre og felt kan referere til objekter void setNavn(Ansatt a, String s)

    { a.navn = s;}

    Metoder kan returnere objekter Ansatt lavesteKontornr(Ansatt a1, Ansatt a2){ return (a1.kontor < a2.kontor ? a1 : a2);}

    Flere variabler kan referere til samme objekt Ansatt a1 = new Ansatt();

    a1.navn = Hallvard;Ansatt a2 = a1;

    a2.navn = Trond;a1.navn.equals(Hallvard) => false

    String navn = Trond

    int kontor = 0Ansatt a1 =

    Ansatt a2 =

  • 8/14/2019 enkle objekter

    20/39

    20

    Objektstrukturer

    Felt i objekter kan referere til andre objekter feltet m vre deklarert til referere til riktig klasse feltet m settes til et spesifikt objekt

    Eksempel:public class Ansatt {

    String navn;

    Ansatt venstreNabo, hyreNabo;

    }

    Ansatt a1 = new Ansatt(), a2 = new Ansatt(), a3 = new Ansatt();

    a1.navn = jag; a2.navn = hal; a3.navn = krogstie;

    a1.venstreNabo = a2; a2.hyreNabo = a1;

    a2.venstreNabo = a3; a3.hyreNabo = a2;

    String navn = jag

    Ansatt venstreNabo =

    Ansatt hyreNabo =

    String navn = hal

    Ansatt venstreNabo =

    Ansatt hyreNabo =

    String navn = krogstie

    Ansatt venstreNabo =

    Ansatt hyreNabo =

  • 8/14/2019 enkle objekter

    21/39

    21

    Objektstrukturer

    Objekter kan kombineres med tabeller felt i objekter kan deklareres og settes til tabeller tabeller kan inneholde objekter

    Eksempel:public class Ansatt {

    String navn;

    Ansatt[] naboer;

    }

    Ansatt a1 = new Ansatt(), a2 = new Ansatt(), a3 = new Ansatt();

    a1.naboer = new Ansatt[]{a2};

    a2.naboer = new Ansatt[]{a1, a3};

    a3.naboer = new Ansatt[]{a2};

    String navn = jag

    Ansatt[] naboer =

    String navn = hal

    Ansatt[] naboer =

    String navn = krogstie

    Ansatt[] naboer =

  • 8/14/2019 enkle objekter

    22/39

    22

    Objektstrukturer

    Navigering .- og []-notasjonene (og metodekall) kan brukes til

    navigering mellom objekter i en objektstruktur (og til

    tilordning med =)

    Gitt

    a1.venstreNabo.venstreNabo.navn = = krogstie

    String navn = jag

    Ansatt venstreNabo =Ansatt hyreNabo =

    String navn = hal

    Ansatt venstreNabo =Ansatt hyreNabo =

    String navn = krogstie

    Ansatt venstreNabo =Ansatt hyreNabo =

    Ansatt a1 = , a2 = , a3 =

  • 8/14/2019 enkle objekter

    23/39

    23

    Objektstrukturer

    Navigering .- og []-notasjonene (og metodekall) kan brukes til

    navigering mellom objekter i en objektstruktur (og til

    tilordning med =)

    Gitt

    a3.naboer[0].naboer[0].navn == jag

    Ansatt a1 = , a2 = , a3 =

    String navn = jagAnsatt[] naboer =

    String navn = halAnsatt[] naboer =

    String navn = krogstieAnsatt[] naboer =

  • 8/14/2019 enkle objekter

    24/39

    24

    Hva skjer nren referanse er uinitialisert/tom?

    Referansen til ingenting kalles null null er ikke et objekt i seg selv, men en verdi som representerer intet

    objekt teknisk sett kan alle (objekt)referanser vre null

    (felt/attributter, variabler, returverdier og verdien av uttrykk)

    Hva kan en gjre med null-verdier? kun testing av identitet (== og !=) og type (instanceof) gir mening nr en prver lese eller sette et attributt eller kalle en metode p

    null-referansen, s krsjer programmet

    Ansatt a; // ikke initialisert med f.eks. new Ansatt()!!!a.navn = Hallvard // tryner med NullPointerException!!!

    gjre noe med null er tull

  • 8/14/2019 enkle objekter

    25/39

    25

    Instansmetoder

    Metoder merket med static utfres kun i kontekst av destatiske variablene (som i Java-terminologi ogs kalles felt) statiske variabler er globale, som ses av statiske metoder arket med globale variabler omslutter all kode

    Metoder uten static (i praksis det vi betrakter som vanligmetoder) kjrer i kontekst av enkeltobjekter

    instanser kan ses p som sm-ark (omtrent som kartotek- eller visittkort) instansmetoder (metoder uten static) kjrer innenfor arket

    public class Ansatt {public String navn;

    public int kontor;public String getNavn() {return navn;

    }public void setNavn(String nyttNavn) {navn = nyttNavn;

    }}

  • 8/14/2019 enkle objekter

    26/39

    26

    Instansmetoder public class Ansatt {

    public String navn;public int kontor;public String getNavn() {

    return navn;}public void setNavn(String s) {

    navn = s;}

    } public class Hovedprogram {

    public static void main(String[] args) {Ansatt a = new Ansatt();a.setNavn(hal);// .-notasjonen og metodenavnif (a.getNavn() == hal) {

    System.out.println(Ja, det virker!);

    }}

    }

    Arkmodellen m utvides ved at instansarket/kortet omsluttermetodens ark

    String[] args

    Ansatt a =

    String navn =

    int kontor = 0

  • 8/14/2019 enkle objekter

    27/39

    27

    Instansmetoder public class Ansatt {

    public String navn;public int kontor;public String getNavn() {

    return navn;}public void setNavn(String s) {

    navn = s;}

    } public class Hovedprogram {

    public static void main(String[] args) {Ansatt a = new Ansatt();a.setNavn(hal);// .-notasjonen og metodenavnif (a.getNavn() == hal) {

    System.out.println(Ja, det virker!);

    }}}

    Arkmodellen m utvides ved at instansarket/kortet omsluttermetodens ark

    String[] args

    Ansatt a =

    String navn =

    int kontor = 0

  • 8/14/2019 enkle objekter

    28/39

    28

    Instansmetoder public class Ansatt {

    public String navn;public int kontor;public String getNavn() {

    return navn;}public void setNavn(String s) {

    navn = s;}

    } public class Hovedprogram {

    public static void main(String[] args) {Ansatt a = new Ansatt();a.setNavn(hal);// .-notasjonen og metodenavnif (a.getNavn() == hal) {

    System.out.println(Ja, det virker!);

    }}}

    Arkmodellen m utvides ved at instansarket/kortet omsluttermetodens ark

    String[] args

    Ansatt a =

    String navn = hal

    int kontor = 0

    String s = hal

  • 8/14/2019 enkle objekter

    29/39

    29

    Instansmetoder m/this-referanse public class Ansatt {

    public String navn;public int kontor;public String getNavn() {

    return navn;}public void setNavn(String s) {

    navn = s;}

    } public class Hovedprogram {

    public static void main(String[] args) {Ansatt a = new Ansatt();a.setNavn(hal);// .-notasjonen og metodenavnif (a.getNavn() == hal) {

    System.out.println(Ja, det virker!);

    }}}

    Metodens ark har en spesiell referanse til instansen, i form at en konstant med navn this.Denne brukes for n objektet selv, samt felt med samme navn som variabler.

    String[] args

    Ansatt a =

    String navn =

    int kontor = 0

    this =

    String s = hal

  • 8/14/2019 enkle objekter

    30/39

  • 8/14/2019 enkle objekter

    31/39

    31

    Instansmetoder m/this-referanse public class Ansatt {

    public String navn;public int kontor;public String getNavn() {

    return navn;}public void setNavn(String s) {

    navn = s;}

    } public class Hovedprogram {

    public static void main(String[] args) {Ansatt a = new Ansatt();a.setNavn(hal);// .-notasjonen og metodenavnif (a.getNavn() == hal) {

    System.out.println(Ja, det virker!);

    }}}

    Metodens ark har en spesiell referanse til instansen, i form at en konstant med navn this.Denne brukes for n objektet selv, samt felt med samme navn som variabler.

    String[] args

    Ansatt a =

    String navn = hal

    int kontor = 0

  • 8/14/2019 enkle objekter

    32/39

    32

    statiske vs. ikke-statiske metoder Metodekall

    Statiske metoder kalles ved navn, evt. med.

    Ikke-statiske metoder (heretter kun kalt metoder) kalles med.

    Metoder utfres i kontekst av et objekt metoden har en implisitt this-referanse this-referansen refererer til verdien til

    Navn brukt som referanser i uttrykk inni metoder refererer enten tilvariabler i metoden eller felt i objektet

    Referanse til felt:String getNavn() { return navn;}

    Referanse til bde felt og variabel:void setNavn(String s) { navn = s;}

    this kan brukes som referanse til objektet selv i uttrykk,f.eks. for gjre uttrykket entydig eller bruke objektet som parameter void setNavn(String navn) { this.navn = navn;}

  • 8/14/2019 enkle objekter

    33/39

    33

    Eksempler pstatiske vs. ikke-statiske metoder Typiske statiske metoder

    Metoder som ikke er knyttet til noen instans// lage spesiell instans, bruker ikke eksisterende instansstatic Ansatt createAnsatt() { ... }

    Metoder som behandler to eller flere instanser likt kan godt vre statiske// sammenligne to objekterstatic Ansatt compareAnsatt(Ansatt a1, Ansatt a2) { ... }

    Hjelpemetoder som behandler ikke-objekt-verdier, som tabeller og tall// sorter tabellstatic void sort(Ansatt[] ansatte) { ... }

    Typiske ikke-statiske metoder metoder som kun gir mening med et objekt av en bestemt type

    // converter objekt til HTML, for visning i web-sideString toHTML() { ... }

    metoder som returnerer verdier som er direkte avledet av felt i objektet// returner etasjen til en ansatt

    int etasje() { return kontor / 100;} metoder som endrer p ikke-statiske felt i et objekt

    // endre ansattes fornavnvoid setFornavn() { ... }

    Det er statiske metoder som er unntaket!

  • 8/14/2019 enkle objekter

    34/39

    34

    Initialisering av objekter medkonstruktrer

    De fleste objekter m initialiseres fr de fr en meningsfyltinnhold/tilstand Ansatt a = new Ansatt();

    a.navn = ...

    En konstruktr (eng: constructor) er en spesielle metode som brukes tilndvendig initialisering ifm. bruk av new-operatoren public class Ansatt {

    String navn;public Ansatt(String navn) {this.navn = navn;// en konstruktr har ingen eksplisitt retur-verdi

    }}Ansatt a = new Ansatt(Hallvard);

    Konstruktren deklareres som en metode uten returtype og medklassens navn evt. med klassen som returtype og uten navn

    Konstruktren vs. new-operatoren konstruktren kalles automatisk av new-operatoren, etter at objektet er laget new-operatoren tar de samme parametrene som konstruktren

  • 8/14/2019 enkle objekter

    35/39

    35

    Litt omobjekter vs. ikke-objekter

    Sannhetsverdier, tall og tegn er ikke objekter i noenforstand (siden skal vi se objektvarianter av disse typene)

    kan ikke bruke 1.pluss(2) for hver ikke-objekttype finnes en klasse med hjelpemetoder for denne typen, f.eks.

    int/Integer, double/Double, char/Character

    Integer (og tilsvarende for Double) Integer.toString(int) konverterer int til String Integer.valueOf(String) konverterer String som int

    Character Character.isUpperCase(char) og Character.isLowerCase(char) sjekker om en

    bokstav er stor (upper) eller liten (lower)

    Character.toUpperCase(char) og Character.toLowerCase(char) konverterer en litenbokstav til en stor og omvendt

    Tabeller tabeller ligner p objekter, fordi de har skalt identitet, kan endres p og deles tabeller har ikke metoder, kun length-attributtet

  • 8/14/2019 enkle objekter

    36/39

    36

    Litt om String og objekter

    String er en klasse String-klassen har noen nyttige statiske konverteringsmetoder

    String-instanser er objekter og har en rekke nyttigemetoder (merk at String-konstanter er String-uttrykk)

    indexOf og lastIndexOf finner hvor en String eller char finnes i Stringen:Hallvard.indexOf(ll) => 2

    startsWith(String) og endsWith(String) for test p prefiks og suffiks:Hallvard.startsWith(Hall) => true

    substring lager en ny String som bestr av en bit av Stringen:Hallvard.substring(2, 4) => ll

    String-klassen ligner p ikke-objekter p to mter String-objekter hndteres spesielt av +-operatoren:Ha + ll + vard => Hallvard

    String-objekter kan ikke endres det finnes ingen mter/metoder som endrer p eksisterende String-objekter String-objekter kan deles uten at endringer et sted synes et annet

  • 8/14/2019 enkle objekter

    37/39

    37

    Verdier og objekter

    referanse (pil) kan endres har metoderboolean/int o.l.

    String pga. impl.tabell

    objekt avhengig avimpl.

    klasse refereres baremed navn

  • 8/14/2019 enkle objekter

    38/39

    38

    Objekter, tekst og utskrift:toString()-metoden

    Noen operasjoner krever at objektreferansergjres om til tekst (String) + operatoren, nr venstre side er en tekst, f.eks. Ansatt: + ansatt

    Metoder som println vil gjre om objektreferanser til tekst

    Konvertering til String null-referansen blir til null objekter konverteres ved kalle String.valueOf(obj), som i sin tur

    kaller toString()-metoden, deklarert som public String toString() objekter uten en slik egendefinert metode blir skrevet ut som

    @

  • 8/14/2019 enkle objekter

    39/39

    toString()-metoden

    toString()-metoden brukes ved konvertering avobjekter til tekst (String), f.eks. ved utskrift medprintln og print

    Ved definere toString()-metoden i egne klasser,endrer en hvordan egne objekter gjres om tiltekst

    Den returnerte verdien (av typen String) br vre knapp, dvs. ikke ta for mye plass informativ nok til gjenkjenne objektet vise egenskaper som er essensielle ved feilfinning

    Vr toString()-metode bruker en vanligkonvensjon

    [ ]