Moduł 7 œ Interfejsy, klasy abstrakcyjne
Transkrypt
Moduł 7 œ Interfejsy, klasy abstrakcyjne
MODU 7 – INTERFEJSY, KLASY ABSTRAKCYJNE 74 Modu 7 – Interfejsy, klasy abstrakcyjne Zawarto jednostki Po zrealizowaniu jednostki b dziesz w stanie: stosowa i tworzy interfejsy tworzy i wykorzystywa klasy abstrakcyjne konstruowa programy z u yciem klas finalnych oraz wewn trznych Wprowadzenie do zagadnie Niew tpliwym atutem programowania obiektowego jest zbli enie tworzonych programów do sposobu postrzegania rzeczywisto!ci przez cz"owieka. Przy pomocy klas mo liwe jest modelowanie poj z dziedziny tworzonego programu. Efektywne wykorzystanie narz dzi OOP (interfejsy, klasy abstrakcyjne, klasy wewn trzne oraz finalne) pozwala na uzyskanie wysokiej elastyczno!ci w procesie modelowania. INTERFEJSY Interfejsy w programowaniu obiektowym to zbiór wymaga* dotycz cych klas, które b d go stosowa . Wyra aj sposób opisu, co klasa powinna robi bez okre!lania, w jaki sposób b dzie to uzyskane. W sk"ad interfejsów wchodz metody oraz pola. Deklaracja metod sk"ada si wy" cznie z nag"ówków (brak jest cia"a metody), natomiast pola interfejsu to wy" cznie sta"e statyczne z jawnie okre!lon warto!ci . Wszystkie sk"adowe interfejsu musz by publiczne. << interface >> Dzwoni + NUMER_ALARMOWY: String + zadzwon(String) : void + zadzwonNaNrAlarmowy() : void Telefon - nrTelefonu : String - lacznyCzasRozmow : int - cenaRozmowy : double + + + + zadzwon(String) : void zadzwonNaNrAlarmowy() : void obliczKwoteDoZaplaty() : double ustawCeneRozmowy(double) : void Rysunek 6. Interfejs i klasa implementuj ca. Klasy korzystaj ce z interfejsu nie rozszerzaj jego mo liwo!ci, ale go implementuj . Oznacza to, e klasa implementuj ca interfejs musi posiada wszystkie metody89 zdefiniowane w interfejsie (cia"a tych 89 Zgodne z nag"ówkami metod wyst puj cych w interfejsie. MODU 7 – INTERFEJSY, KLASY ABSTRAKCYJNE 75 metod). Sk"adnia definicji interfejsu podobna jest do definicji klasy. Zamiast s"owa class stosowane jest s"owo kluczowe interface. Mo liwe jest równie dziedziczenie interfejsów90. interface Dzwoni { public static String NUMER_ALARMOWY = "112"; public void zadzwon(String); public void zadzwonNaNrAlarmowy(); } Proces implementacji polega na umieszczeniu s"owa kluczowego implements w nag"ówku definicji klasy, po którym wyst puj nazwy interfejsów, które klasa implementuje. Zatem sk"adowymi klasy s wszelkie pola i metody wyst puj ce w definicji klasy oraz pola i metody okre!lone w definicji implementowanych interfejsów91. Poni szy kod programu ilustruje implementacj interfejsu Dzwoni przez klas Telefon. class Telefon implements Dzwoni{ // deklaracja pól private String numerTelefonu; private int lacznyCzasRozmow; private static double cenaRozmowy = 0.48; // z</min. // konstruktor public Telefon (String numer) { numerTelefonu = numer; } // deklaracja metod public double obliczKwoteDoZaplaty() { return cenaRozmowy * (lacznyCzasRozmow / 60); } public static void ustawCeneRozmowy(double nowaCena){ cenaRozmowy = nowaCena; } // metody wymagane przez interfejs public void zadzwon(String nrTelefonu) { System.out.println ("Dzwoni? do: " + nrTelefonu); System.out.println ("Dry@, dry@..."); System.out.println ("Rozmowa w toku..."); int czasRozmowy = (int) (Math.random()*3600); lacznyCzasRozmow += czasRozmowy; System.out.println ("Rozmowa zako@czona. "); System.out.printf ("Czas rozmowy: %d min. %d sek.", czasRozmowy/60, czasRozmowy%60); } public void zadzwonNaNrAlarmowy() { System.out.println ("Dzwoni? do: " + Dzwoni.NUMER_ALARMOWY); System.out.println ("Dry@, dry@..."); System.out.println ("Centrum pomocy, s<ucham"); } } public class Test { public static void main(String args[]) { Telefon telefonKasi = new Telefon("1276594633"); telefonKasi.zadzwon("606342765"); telefonKasi.zadzwonNaNrAlarmowy(); } } Interfejsy, podobnie jak klasy, mog by u ywane jako typ danych przy deklaracji zmiennej92. Warto!ci takiej zmiennej mo e by odwo"anie do obiektu dowolnej klasy, która implementuje dany interfejs93. 90 Stosowanie interfejsów umo liwa realizacj dziedziczenia wielobazowego. Klasa na pewno b dzie posiada"a przynajmniej metody wyst puj ce w danym interfejsie/interfejsach. 92 Jest to tak zwane rzutowanie rozszerzaj ce. 91 MODU 7 – INTERFEJSY, KLASY ABSTRAKCYJNE 76 KLASY I METODY ABSTRAKCYJNE Klasy abstrakcyjne wykorzystywane s do modelowania rzeczywisto!ci na do! ogólnym poziomie. Zawieraj najbardziej znacz ce cechy i zachowania konkretnego typu. Nie wszystkie zachowania (metody) musz zosta zaimplementowane. Cz ! z nich (nawet wszystkie94) mo e sk"ada si wy" cznie z nag"ówka (metody abstrakcyjne). Umo liwia to stworzenie ogólnego modelu danego typu bez konieczno!ci zag" biania si w szczegó"y implementacyjne. Klasa abstrakcyjna nie mo e stanowi podstawy do utworzenia obiektu, mo liwe jest natomiast tworzenie klas pochodnych. Klasa, która dziedziczy po klasie abstrakcyjnej musi zaimplementowa wszystkie metody abstrakcyjne wyst puj ce w klasie bazowej. Deklaracja klasy abstrakcyjnej odbywa si za pomoc s"owa kluczowego abstract umieszczonego przed nazw klasy. W podobny sposób tworzone s metody abstrakcyjne95. abstract class Figura { protected String kolor; public Figura(String kolor) { this.kolor = kolor; } public abstract double obliczPowierzchnie(); } class Kwadrat extends Figura { private double bok; public Kwadrat(String kolor, double bok) { super(kolor); this.bok = bok; } public double obliczPowierzchnie() { return bok * bok; } } class Prostokat extends Figura { private double szerokosc; private double wysokosc; public Prostokat(String kolor, double szerokosc, double wysokosc) { super(kolor); this.szerokosc = szerokosc; this.wysokosc = wysokosc; } public double obliczPowierzchnie() { return szerokosc * wysokosc; } } KLASY I METODY FINALNE Klasy, z których nie jest mo liwe dziedziczenie nazywane s klasami finalnymi, co wyra ane jest za pomoc s"owa kluczowego final wyst puj cego w definicji klasy:96 public final class Procesor { // cia<o klasy (sk<adowe klasy) } U ycie s"owa kluczowego final w deklaracji metody powoduje, e nie jest mo liwe jej przes"oni cie w klasach dziedzicz cych. 93 Odwo"ania do metod, które nie wyst puj w interfejsie mo liwe s za pomoc odpowiedniego rzutowania (rzutowanie zaw aj ce) 94 W przypadku, gdy klasa sk"ada si wy" cznie z metod abstrakcyjnych, preferowane jest stosowanie interfejsów. 95 Je!li klasa posiada jak kolwiek metod abstrakcyjn , równie musi by abstrakcyjn . Metody abstrakcyjne nie posiadaj cia"a (nie posiadaj równie nawiasów klamrowych otwieraj cych i zamykaj cych) 96 Przyk"adami klas finalnych s np. klasy opakowuj ce, czy te klasa String. MODU 7 – INTERFEJSY, KLASY ABSTRAKCYJNE 77 KLASY WEWN*TRZNE Mo liwe jest umieszczenie definicji klasy w obr bie innej klasy. Konstrukcja ta stosowana jest w przypadku, gdy u ycie klasy jest ograniczone i tworzenie instancji (obiektów) wyst puje wy" cznie w obr bie jednej klasy. W przypadku, gdy utworzona klasa znajdzie wykorzystanie tylko w jednej, innej klasie, preferowane jest zdefiniowanie jej jako klas wewn trzn (mo liwe jest ukrycie jej implementacji). Definicja klasy wewn trznej musi znale> si w ciele innej klasy97. class Testowa { // cia<o klasy g<ównej (sk<adowe klasy) class KlasaWewnetrzna { // cia<o klasy wewn?trznej (sk<adowe klasy) } } Klasa wewn trzna posiada dost p do wszystkich sk"adowych klasy w której zosta"a zdefiniowana98. Nie ma równie adnych ogranicze* co do wykorzystania dziedziczenia czy te implementacji interfejsów. Szczególnym przypadkiem klas wewn trznych s klasy anonimowe99 (nie posiadaj ce nazwy). Pytania sprawdzaj ce 1. Okre!l cel i zastosowanie interfejsów. 2. Czy specyfikacja j zyka Java narzuca ograniczenia na liczb interfejsów, jakie mo e implementowa tworzona klasa? 3. Czy mo liwe jest tworzenie interfejsów pochodnych? 4. W jakim przypadku klasa implementuj ca interfejs nie musi tworzy wszystkich metod wyst puj cych w tym interfejsie? 5. Które z poni szych deklaracji s b" dne (KlasaA, KlasaB, KlasaC s klasami, a InterfejsA, InterfejsB, InterfejsC interfejsami)? class KlasaA extends KlasaB class KlasaA implements InterfejsA class KlasaC extends KlasaA, KlasaB class KlasaB implements InterfejsB, InterfejsC interface InterfejsA implements InterfejsB interface InterfejsB extends InterfaceA interface InterfejsC extends InterfaceA, InterfaceB 6. Sprawd> w dokumentacji, jakie interfejsy implementuje klasa String? Jakie nag"ówki metod s zdefiniowane w tych interfejsach? 7. Czy poprawny jest poni szy kod? public interface Tester { } 8. Czym jest klasa abstrakcyjna? 9. Wska ró nice mi dzy klas abstrakcyjn , a interfejsem. 10. Poni szy kod programu zawiera definicj klasy abstrakcyjnej wraz z jej sk"adowymi. Wska ewentualne b" dy. 97 Klasy wewn trzne mog by równie definiowane wewn trz metod. Tak utworzone klasy nosz nazw lokalnych klas wewn trznych. 98 Nawet sk"adowych prywatnych. 99 Klasy anonimowe do! cz sto s wykorzystywane do obs"ugi zdarze* w programowaniu aplikacji korzystaj cych z graficznego interfejsu u ytkownika. MODU 7 – INTERFEJSY, KLASY ABSTRAKCYJNE 78 public abstract class Zwierze { private String nazwa; public abstract void je() { System.out.println ("Aktualnie je."); } public abstract void idzie(); public abstract void pije(); } 11. Czy jest mo liwe utworzenie obiektów na bazie klasy abstrakcyjnej? 12. Czy klasa mo e dziedziczy z klasy abstrakcyjnej? Czy takie dziedziczenie jest mo liwe dla klas abstrakcyjnych? 13. Zastanów si czy klasa, która dziedziczy z klasy abstrakcyjnej i nie dostarcza implementacji metod zawartych w nadklasie mo e by klasa nie abstrakcyjn ? 14. Wska b" d w poni szym kodzie programu: final class A { private String nazwa; public String pobierzNazwe() { return this.nazwa; } } class B extends A { private int liczba; public int pobierzLiczbe() { return liczba; } } 15. Czym charakteryzuj si metody finalne? 16. Podaj przyk"ady u ycia klas wewn trznych. 17. Czym s klasy anonimowe? Wska zastosowanie tych klas. Zadania do wykonania INTERFEJSY I KLASY ABSTRAKCYJNE Zadanie 118 – SrodkiTransportu.java Napisz program modeluj cy istniej ce !rodki transportu u ywane do przemieszczania si zarówno na l dzie, wodzie, jak i w powietrzu.. Rozwi zanie Utwórz interfejs Plywa oraz Lata (metody odpowiednio plyn() i lec()). Zdefiniuj klasy implementuj ce ka dy z interfejsów (np. Statek, Samolot) jak i klas tworz c przyk"adowe obiekty wraz z wywo"aniem zaimplementowanych metod. MODU 7 – INTERFEJSY, KLASY ABSTRAKCYJNE 79 interface Plywa { public void plyn(); } interface Lata { public void lec(); } class Statek implements Plywa { public void plyn(){ System.out.println ("Statek p<ynie"); } } class Samolot implements Lata { public void lec(){ System.out.println ("Samolot leci"); } } public class SrodkiTransportu { public static void main (String[] args) { Lata samolot = new Samolot(); samolot.lec(); Plywa statek = new Statek(); statek.plyn(); } } Zadanie 119 – Hydroplan.java Hydroplan to !rodek transportu umo liwiaj cy przemieszczanie si zarówno w powietrzu, jak i na wodzie. Zdefiniuj klas Hydroplan, która implementuje obydwa interfejsy. Sprawd> dzia"anie przyk"adowego hydroplanu. Zadanie 120 – OdglosyZwierzat.java Dokonaj modyfikacji zadania Zwierz?ta.java wyst puj cego w poprzednim module, tworz c interfejs odpowiedzialny za odg"osy zwierz t. Po utworzeniu interfejsu, zmodyfikuj klasy, które b d go implementowa oraz sprawd> poprawno! dzia"ania programu. Utwórz trzy nowe klasy dla trzech nowych zwierz t. Ka da z tych klas powinna implementowa po!rednio lub bezpo!rednio interfejs Odglos. Interfejs oraz g"ówna klasa: interface Odglos public void dajGlos() class Zwierze implements Odglos private String nazwa public void dajGlos() nowy interfejs nag(ówek metody (cia(o interfejsu) klasa implementuj ca interfejs nazwa zwierz,cia deklaracja metody wymagana przez interfejs Zadanie 121 – PorzadkowanieListyStudentow.java Dost pna jest lista studentów, któr nale y uporz dkowa wed"ug numeru albumu. Napisz program, który zrealizuje opisan operacj . Rozwi zanie Utwórz lub wykorzystaj z poprzednich modu"ów prost klas Student zawieraj c imi , nazwisko oraz numer albumu studenta. Klasa ta powinna równie implementowa interfejs Comparable (zapoznaj si z dokumentacj ). Do sortowania tablicy zawieraj cej studentów u yj metody sort() z klasy java.util.Arrays. Wy!wietl wyniki na konsoli. Poni ej przedstawiona zosta"a przyk"adowa lista studentów: MODU 7 – INTERFEJSY, KLASY ABSTRAKCYJNE 80 Student[] lista = new Student[4]; lista[0] lista[1] lista[2] lista[3] = = = = new new new new Student("Jan", "Kowalski", 432187); Student("Adam", "Nowak", 332132); Student("Joanna", "Wyszek", 632165); Student("Ania", "Nowak", 321419); oraz uzyskane wyniki: Student: Student: Student: Student: Ania Nowak Adam Nowak Jan Kowalski Joanna Wyszek nr nr nr nr albumu: albumu: albumu: albumu: 321419 332132 432187 632165 Interfejs Comparable posiada jedn metod compareTo(Object). Zwraca ona warto!ci typu int. Gdy obiekty s identyczne, metoda przyjmuje warto! 0 (zero). Je!li obiekt, na rzecz którego zosta"a wywo"ana metoda jest mniejszy ni obiekt przekazany jako parametr, metoda zwraca warto! ujemn , w przeciwnym przypadku, warto! dodatnia.. Metoda sort() z klasy java.util.Arrays sortuje mi dzy innymi tablice sk"adaj ce si z dowolnych obiektów. Sposób w jaki dane maj zosta posortowane uzale niony jest od warto!ci zwracanej przez metod compareTo(Object) wyst puj c w tych obiektach100. Dodatkowo nale y pami ta o konwersji (rzutowaniu) obiektów z klasy Object do klasy Student w ciele metody porównuj cej. Kod klasy Student implementuj cej interfejs Comparable wraz z przyk"adem dzia"ania zosta" przedstawiony poni ej: 100 Klasa na podstawie, której powsta"y obiekty musi implementowa interfejs Comparable. MODU 7 – INTERFEJSY, KLASY ABSTRAKCYJNE 81 import java.util.*; class Student implements Comparable{ private String imie; private String nazwisko; private int nrAlbumu; public Student(String imie, String nazwisko, int nrAlbumu) { this.imie = imie; this.nazwisko = nazwisko; this.nrAlbumu = nrAlbumu; } public int compareTo(Object s){ return (nrAlbumu - ((Student)s).nrAlbumu); } public String toString() { return "Student " + imie + " " + nazwisko + " nr albumu: " + nrAlbumu; } } public class PorzadkowanieListyStudentow { public static void main (String[] args) { Student[] lista = new Student[4]; lista[0] lista[1] lista[2] lista[3] = = = = new new new new Student("Jan", "Kowalski", 432187); Student("Adam", "Nowak", 332132); Student("Joanna", "Wyszek", 632165); Student("Ania", "Nowak", 321419); Arrays.sort(lista); for(Student student:lista){ System.out.println (student); } } } Zadanie 122 – ZaawansowanePorzadkowanieListyStudentow.java Zmodyfikuj kod programu porz dkowuj cego studentów wg numeru albumu tak, aby byli oni sortowani jednocze!nie wg nazwiska, imienia, oraz numeru albumu. Przyk"adowe rezultaty odnosz ce si do danych zawartych w poprzednim zadaniu zosta"y przedstawione poni ej. Student: Student: Student: Student: Jan Kowalski Adam Nowak Ania Nowak Joanna Wyszek nr nr nr nr albumu: albumu: albumu: albumu: 432187 332132 321419 632165 Zadanie 123 – UrzadzeniaMuzyczne.java Biuro projektowe firmy BOOMBOX zajmuje si projektowaniem nowych linii elektronicznych urz dze* muzycznych. Przedstaw w j zyku programowania Java model urz dze* odtwarzaj cych muzyk , wraz z podstawowymi ich w"a!ciwo!ciami (w" cz, wy" cz, start, stop, pauza), który b dzie stanowi" podstaw dla dalszych prac projektowych. Rozwi zanie Utwórz odpowiednie interfejsy oraz klas abstrakcyjn dla kilku urz dze*. Jeden interfejs dla urz dze*, które mo na w" czy i wy" czy oraz drugi dla odtwarzaj cych muzyk (podstawowe w"a!ciwo!ci takie jak start, stop, pauza). Ponadto utwórz klas abstrakcyjn (z wykorzystaniem powy szych interfejsów) przedstawiaj c prosty odtwarzacz oraz klas b d c odzwierciedleniem odtwarzacza CD. Gotowe rozwi zanie powinno zosta przetestowane poprzez utworzenia odtwarzacza CD marki Sony i sprawdzenie jego dzia"ania. Poni ej przedstawiony zosta" schemat interfejsów oraz klas koniecznych do utworzenia programu interface Wlacza public void wlacz() public void wylacz() public boolean czyDziala() interfejs dla urz dze2 które mo3na w( czy4 i wy(. w( czenie urz dzenia wy( czenie urz dzenia sprawdzenie czy urz dzenie dzia(a MODU 7 – INTERFEJSY, KLASY ABSTRAKCYJNE interface Odtwarza 82 public void pauza() interfejs dla urz dze2 odtwarzaj cych urz dzenie odtwarza urz dzenie nie odtwarza urz dzenie zatrzymane abstract class Odtwarzacz implements Wlacz, Odtwarza klasa abstrakcyjna implementuj ca dwa interfejsy public void start() public void stop() public abstract void ciszej() pole klasy (aktualna g(o7no74) pole klasy (stan urz dzenia) pole klasy (marka urz dzenia) konstruktor klasy metoda w( czaj ca urz dzenie metoda wy( czaj ca urz dzenie metoda dost,powa metoda abstrakcyjna metoda abstrakcyjna class OdtwarzaczCD extends Odtwarzacz klasa reprezentuj ca prosty odtwarzacz CD protected int glosnosc private boolean dziala protected String marka public Odtwarzacz(String) public void wlacz() public void wylacz() public boolean czyDziala() public abstract void glosniej() public OdtwarzaczCD(String) public void glosniej() public void ciszej() public void start() public void stop() public void pauza() public String toString() konstruktor klasy metoda zwi,kszaj ca g(o7no74 metoda zmniejszaj ca g(o7no74 metoda uruchamiaj ca odtwarzanie metoda zatrzymuj ca odtwarzanie metoda wstrzymuj ca odtwarzanie metoda zwracaj ca reprezentacj, obiektu w formie (a2cucha tekstowego MODU 7 – INTERFEJSY, KLASY ABSTRAKCYJNE interface Wlacza { public void wlacz(); public void wylacz(); public boolean czyDziala(); } interface Odtwarza { public void start(); public void stop(); public void pauza(); } abstract class Odtwarzacz implements Wlacza, Odtwarza { protected int glosnosc; private boolean dziala; protected String marka; public Odtwarzacz(String marka){ this.marka = marka; dziala = false; } public void wlacz(){ dziala = true; } public void wylacz(){ dziala = false; } public boolean czyDziala() { return dziala; } public abstract void glosniej(); public abstract void ciszej(); } class OdtwarzaczCD extends Odtwarzacz { public OdtwarzaczCD (String marka){ super(marka); glosnosc = 10; } public void glosniej(){ glosnosc++; } public void ciszej(){ glosnosc--; } public void start(){ System.out.println ("Odtwarzacz CD odtwarza"); } public void stop(){ System.out.println ("Odtwarzacz CD nie odtwarza"); } public void pauza(){ System.out.println ("Odtwarzacz CD zatrzymany"); } public String toString() { return "Odtwarzacz CD marki: " + marka + " jest " + ( czyDziala() ? "w<Sczony" : "wy<Sczony") + " G<oTnoTU: " + glosnosc; } } public class UrzadzeniaMuzyczne { public static void main (String[] args) { OdtwarzaczCD sony = new OdtwarzaczCD("Sony"); sony.wlacz(); sony.start(); sony.glosniej(); System.out.println (sony); 83 MODU 7 – INTERFEJSY, KLASY ABSTRAKCYJNE 84 } } Zadanie 124 –NoweUrzadzenieMuzyczne.java Firma BOOMBOX przygotowuje si do produkcji kolejnej klasy urz dze* – odtwarzaczy MP3. Rozszerz poprzedni program tak, by uwzgl dnia" t now kategori urz dze* muzycznych. Po utworzeniu klasy przetestuj j tworz c obiekt b d cy Twoim osobistym odtwarzaczem MP3. Poni ej przedstawiono stosown definicj klasy. class OdtwarzaczMP3 extends Odtwarzacz klasa reprezentuj ca prosty odtwarzacz MP3 dziedzicz ca z klasy Odtwarzacz private int pojemnosc pole klasy (pojemno74 urz dzenia) pole klasy (stan baterii) private int bateria public OdtwarzaczMP3(String, int, int) public void glosniej() public void ciszej() public void start() public void stop() public void pauza() public String toString() konstruktor klasy metoda zwi,kszaj ca g(o7no74 metoda zmniejszaj ca g(o7no74 metoda uruchamiaj ca odtwarzanie metoda zatrzymuj ca odtwarzanie metoda wstrzymuj ca odtwarzanie metoda zwracaj ca reprezentacj, obiektu w formie (a2cucha tekstowego Zadanie 125 – Radioodbiornik.java Wzoruj c si na poprzednich zadaniach, utwórz model kolejnego urz dzenia muzycznego – radioodbiornika. Zastanów si , które interfejsy nale y zastosowa oraz czy wskazane jest dziedziczenie z klasy abstrakcyjnej. Poni ej umieszczono definicj klasy Radio wraz z jej sk"adowymi. Utwórz kod programu , a nast pnie przyk"adowe radio. class Radio implements Wlacz private boolean dziala private String marka private double czestotliwosc private int glosnosc public Radio(String, double) public void glosniej() public void ciszej() public String toString() klasa reprezentuj ca radio implementuj ca interfejs pole klasy (stan urz dzenia) pole klasy (marka urz dzenia) pole klasy (aktualna cz,stotliwo74) pole klasy (aktualna g(o7no74) konstruktor klasy metoda zwi,kszaj ca g(o7no74 metoda zmniejszaj ca g(o7no74 metoda zwracaj ca reprezentacj, obiektu w formie (a2cucha tekstowego KLASY WEWN*TRZNE I FINALNE Zadanie 126 –TelefonKomorkowyZKartaSIM.java Ka dy telefon komórkowy posiada kart SIM zawieraj c informacj zwi zane z numerem, operatorem, ksi k adresow itp. Utwórz model takiego telefonu, korzystaj c z narz dzi zawartych w j zyku programowania Java. Rozwi zanie Napisz klas TelefonKomorkowyZKartaSIM, w której ciele zadeklaruj klas wewn trzn KartaSIM. Utwórz nowy obiekt klasy wewn trznej, pobierz dane z karty SIM. Sprawd> dzia"anie tak utworzonej klasy poprzez utworzenie kilku obiektów. Jakie pliki zostan wygenerowane podczas kompilacji? MODU 7 – INTERFEJSY, KLASY ABSTRAKCYJNE 85 public class TelefonKomorkowyZKartaSIM { private KartaSIM sim; public TelefonKomorkowyZKartaSIM(String numer) { sim = new KartaSIM(numer); } // definiujemy klas? wewn?trznS KartaSIM class KartaSIM { private String numerTelefonu; public KartaSIM(String numer) { numerTelefonu = numer; } public String pobierzNumerTelefonu() { return numerTelefonu; } } public String toString(){ return "Telefon z karta SIM o numerze: " + sim.pobierzNumerTelefonu(); } public static void main (String[] args) { TelefonKomorkowyZKartaSIM telefonMarcina = new TelefonKomorkowyZKartaSIM("507864934"); TelefonKomorkowyZKartaSIM telefonKasi = new TelefonKomorkowyZKartaSIM("679342123"); System.out.println (telefonMarcina); System.out.println (telefonKasi); } } Zadanie 127 – Komputery.java Ka dy komputer posiada procesor. Posiada on dost p do elementów sk"adowych komputera (pami , grafika, porty itp.). Chcemy napisa prost klas Komputer posiadaj c klas wewn trzn Procesor. Utwórz trzy przyk"adowe komputery z ró nymi procesorami. Wykorzystaj poni sze informacje do tworzenia obiektów jak i samej klasy Komputer. Komputer dell = new Komputer("Dell","Pentium IV",1.66,1024); Komputer ibm = new Komputer("IBM","AMD",2.2,2048); class Komputer private String marka private Procesor procesor private int pamiec public Komputer(String, String, double, int) class Procesor public String toString() class Procesor private String marka private double czestotliwosc public Procesor(String, double) public void rezerwujPamiec(int) public void zwolnijPamiec(int) klasa g(ówna pole klasy (marka komputera) pole klasy (rodzaj procesora) pole klasy (zainstalowana pami,4 w MB) konstruktor klasy klasa wewn,trzna (patrz ni3ej) metoda zwracaj ca reprezentacj, obiektu w formie (a2cucha tekstowego klasa wewn,trzna klasy Komputer pole klasy (marka procesora) pole klasy (cz,stotliwo74 procesora w GHz) konstruktor klasy metoda rezerwuj ca okre7lon w MB liczb, pami,ci metoda zwalniaj ca okre7lon w MB liczb, pami,ci MODU 7 – INTERFEJSY, KLASY ABSTRAKCYJNE public String toString() 86 metoda zwracaj ca reprezentacj, obiektu w formie (a2cucha tekstowego