Enum

  • Uploaded by: hallvard
  • 0
  • 0
  • December 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Enum as PDF for free.

More details

  • Words: 558
  • Pages: 10
Læringsmål for forelesningen • Objektorientering – Enumerations

• Java­programmering – Enumerations

• Eclipse – Opprette Enum­klasse

1

 

 

Enumerations ­ hvorfor • I Card­klassen har vi brukt en String for å angi  kortfarge • Kun et begrenset sett verdier, ”H”, ”S”, ”D”, ”C”  har vært lov å bruke • Problemer – Initialisering av Card­objekt med ulovlig farge, f.eks. ”Hjerter” – Sammenligning card.getSuit() == ”H” kan gi false, selv for hjerterkort

• Hverken tall eller String er egnet, hvis en trenger  typesjekking og egendefinerte metoder 2

 

 

Enumerations (2) • Mange programmeringsspråk gir muligheten til å  definere nye typer verdier, som ligner både på tall  og på objekter. – – – –

Et (begrenset) sett verdier som refereres til ved navn. Verditypen er ulike alle andre typer. Verdiene kan ha en logisk ordning. Enkle operasjoner kan utføres på dem, men ingen behov for avansert OO  (som arv)

• Kalles ”enumerations” – som kan oversettes  til”sette nummer” på eller ”telle/ramse opp” • I Java representerer en enum ett sett av  forhåndsdefinerte instanser  • Vanligvis brukt kun når vi skal representere et sett  navn på ”noe”. 3

 

 

Enumerations (3) • Eksempel: – enum Kortfarge { spar, hjerter, ruter, kløver } – Kortfarge er nå en type – Fire instanser er ferdiglaget og flere kan ikke opprettes. – For hver instans finnes det et navn som refererer til  verdien (som ikke kan endres). I Java er dette et statisk  felt og brukes på vanlig måte med, f.eks.  Kortfarge.spar. 4

 

 

Enumerations (3) • Typedeklarasjoner kan utnytte den nye klassen, f.eks. public class Spillkort { private Kortfarge farge; private int verdi; } public Spillkort(Kortfarge farge, int verdi) { this.farge = farge; this.verdi; }

• Verdiene har ofte en intern ordning (tilsvarende heltall)

– I Bridge­spillet er fargene rangert kløver, ruter, hjerter, spar  – Rekkefølgen som de står i, definerer ordningen dem i mellom. Noen språk tillater  også at en oppgir et nummer som verdien skal ha i rekken av verdier.

5

 

 

Enumerations i Java (1) • enum­deklarasjonen definerer ny type, med et (begrenset) sett verdikonstanter

• Enum­typer har mange likhetstrekk  med klassedefinisjoner... 6

 

 

Enumerations i Java (2) • enum­deklarasjonen – navngir en ny type/klasse med navngitte verdier: public enum { , , ...; } – definerer et sett konstanter som navngis med ., f.eks. Kortfarge.SPAR

• En del metoder blir automatisk definert – String name() returnerer attributtnavnet – int ordinal() returnerer nummeret i rekken av verdier (0 og oppver) – values(): statisk metode som returnerer tabell med alle verdiene

7

 

 

Enumerations i Java (3) • Flere metoder er definert, basert på disse

– String toString() returnerer navnet, dvs. name() – valueOf(String) returnerer verdien for et bestemt navn – int compareTo() er basert på ordinal() og støtter sortering

• En kan (re)definere metoder, som for vanlige klasser • switch­konstruksjonen kan brukes på verdier av enum­typer 8

 

 

Enumerations i Java (4) • En kan definere attributter og gi disse  ulike verdier vha. av en konstruktør. • Merk at vi likevel ikke kan bruke new selv. 9

 

 

Har du nådd læringsmålene? • Java­programmering – Lag en enum for kortverdiene også, med  sekvensen ess, to, ..., ti, knekt, dame og konge. – Endre Spillkort­ og Kortstokkspill­klassene, slik at  de benytter den nye Kortverdi­klassen (som altså  er en enumeration­klasse). – Hva gjør du dersom et kortspill bruker verdiene to,  tre, ..., konge og ess istedenfor ess, to, ..., konge? 10

 

 

Related Documents

Enum
December 2019 19

More Documents from "hallvard"

Innkapslingseksempel
December 2019 14
Interface
December 2019 61
Enum
December 2019 19
Ark-modellen
December 2019 19
Rpn Kalkulator
December 2019 12