Wyliczenia - PowerPoint PPT Presentation

About This Presentation
Title:

Wyliczenia

Description:

Title: PowerPoint Presentation Last modified by: PRz Created Date: 1/1/1601 12:00:00 AM Document presentation format: Pokaz na ekranie Other titles – PowerPoint PPT presentation

Number of Views:24
Avg rating:3.0/5.0
Slides: 13
Provided by: wro87
Category:

less

Transcript and Presenter's Notes

Title: Wyliczenia


1
Wyliczenia
  • Instytut Informatyki U.Wr.
  • 17 stycznia 2013 r.

2
Ogólnie o wyliczeniach
  • Wyliczenia lista nazwanych stalych.
  • Wyliczenie definicja typu klasy (moze zawierac
    pola, metody, konstruktory).
  • Slowo kluczowe enum.
  • Prosty przykladenum Season WINTER, SPRING,
    SUMMER, FALL

3
Prosty przyklad
  • Przyklad wyliczeniaenum Season WINTER,
    SPRING, SUMMER, FALL
  • Przyklad deklaracji zmiennejSeason s null
  • Przyklad przypisania wyliczenias
    Season.WINTER

4
Zastosowanie wyliczen w instrukcjach sterujacych
  • Wyliczenia mozna ze soba porównywac za pomoca
    operatorów i !if (sSeason.WINTER) //
  • Wyliczen mozna uzywac w instrukcji wyboru (stale
    w blokach case nie sa poprzedzone nazwa
    wyliczenia)switch (s) case WINTER // case
    SPRING // case SUMMER // case FALL //

5
Zastosowanie wyliczen w instrukcjach sterujacych
  • Wyliczen mozna uzywac w petlifor (Season x
    Season.values()) //
  • Metoda statyczna values() w kazdym wyliczeniu
    zwraca tablice wszystkich stalych wyliczeniowych.
  • Metoda statyczna valueOf(String) w kazdym
    wyliczeniu zwraca stala wyliczeniowa na podstawie
    jej nazwy.
  • Metoda toString() w kazdym wyliczeniu zwraca
    nazwe stalej wyliczeniowej.

6
Implementacja wyliczen
  • Wspólna klasa bazowa dla wszystkich wyliczen
    jest public abstract class EnumltE extends
    EnumltEgtgt
  • Stale wyliczeniowe w danym typie wyliczeniowym to
    finalne pola tego samego typu wyliczeniowego.

7
Metody w wyliczeniach
  • Wartosci porzadkowe stalych wyliczeniowych to
    kolejne liczby calkowite przypisane do stalych
    wyliczeniowych zgodnie z kolejnoscia ich
    deklaracji (zaczynaja sie od 0).
  • Odczytanie wartosci porzadkowej ordinal().
  • Porównywanie stalych wyliczeniowych equals(),
    compareTo(), i !.
  • Nazwy stalych wyliczeniowych toString(), name().

8
Przyklad z kartami (1)
  • public class Card public enum Rank
    DEUCE, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT,
    NINE, TEN, JACK, QUEEN, KING, ACE
    public enum Suit CLUBS, DIAMONDS, HEARTS,
    SPADES private final Rank rank private
    final Suit suit private Card(Rank rank, Suit
    suit) this.rank rank this.suit
    suit

9
Przyklad z kartami (2)
  • public Rank rank() return rank public
    Suit suit() return suit public String
    toString() return rank " of " suit
    private static final ListltCardgt protoDeck
    new ArrayListltCardgt() public static
    ArrayListltCardgt newDeck() return new
    ArrayListltCardgt(protoDeck) static for
    (Suit suit Suit.values()) for (Rank rank
    Rank.values()) protoDeck.add(new
    Card(rank, suit))

10
Przyklad z planetami (1)
  • public enum Planet MERCURY (3.303e23,
    2.4397e6), VENUS (4.869e24, 6.0518e6), EARTH
    (5.976e24, 6.37814e6), MARS (6.421e23,
    3.3972e6), JUPITER (1.9e27, 7.1492e7),
    SATURN (5.688e26, 6.0268e7), URANUS
    (8.686e25, 2.5559e7), NEPTUNE (1.024e26,
    2.4746e7) private final double mass // in
    kilograms private final double radius // in
    meters Planet(double mass, double radius)
    this.mass mass this.radius radius

11
Przyklad z planetami (2)
  • private double mass() return mass
    private double radius() return radius
    // universal gravitational constant public
    static final double G 6.67300E-11 double
    surfaceGravity() return G mass / (radius
    radius) double surfaceWeight(double
    otherMass) return otherMass
    surfaceGravity()

12
Przyklad z planetami (3)
  • public static void main (String args)
    if (args.length ! 1) System.err.println(
    "Usage java Planet ltearth_weightgt")
    System.exit(-1) double earthWeight
    Double.parseDouble(args0) double mass
    earthWeight/EARTH.surfaceGravity() for
    (Planet p Planet.values())
    System.out.printf( "Your weight on s is
    fn", p, p.surfaceWeight(mass))
Write a Comment
User Comments (0)
About PowerShow.com