plik


ÿþProgramowanie obiektowe Laboratorium z przedmiotu Programowanie obiektowe - zestaw 02 Laboratorium z przedmiotu Programowanie obiektowe - zestaw 02 Cel zaj. Celem zaj jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia. Wprowadzenie teoretyczne. Rozwa|ana w ramach niniejszych zaj tematyka jest wa|na, gdy| dziedziczenie i polimorfizm s mechanizmami wykorzystywanymi powszechnie w programowaniu obiektowym. Aby ze zrozumieniem zrealizowa zadania, przewidziane do wykonania w ramach zaj laboratoryjnych, nale|y zna znaczenie poj takich jak: dziedziczenie, klasa bazowa, klasa potomna, polimorfizm, metoda wirtualna, kolekcja List<T> i jej podstawowa funkcjonalno[. Nale|y równie| zna podstawy jzyka modelowania systemów informatycznych UML. 1. Dziedziczenie Dziedziczenie polega na tworzenie nowej klasy na podstawie klasy ju| istniejcej. W jzyku C# dziedziczeniu podlegaj: pola klasy, wBa[ciwo[ci oraz metody. Podobnie jak w C++ elementy klasy, które w klasie bazowej zostaBy oznaczone jako  public lub  protected , w klasie potomnej równie| bd miaBy ten sam zakres widoczno[ci, natomiast elementy oznaczone jako  private lub  internal nie podlegaj dziedziczeniu. Mechanizm dziedziczenia przedstawia poni|szy przykBad: PrzykBad 1  Dziedziczenie 1 Programowanie obiektowe Prosz zwróci szczególn uwag na lini kodu numer 32, w której wywoBywany jest konstruktor klasy bazowej. W jzyku C# do wywoBania konstruktora klasy bazowej wykorzystywane jest sBowo kluczowe  base . Klasa bazowa (na przykBadzie 1 -  Budynek ) to klasa, po której dziedziczy inna klasa nazywana klas potomn (na przykBadzie 1 -  BudynekMieszkalny ). 2. Polimorfizm Pojcie polimorfizmu odnosi si do klas, które wspóBdziel te same metody, ale implementuj je w ró|ny sposób. W praktyce oznacza to, |e klasa potomna dziedziczca dan metod z klasy bazowej, mo|e przypisa jej zupeBnie inn funkcjonalno[. Mechanizm polimorfizmu przedstawia poni|szy przykBad: PrzykBad 2  Polimorfizm 2 Programowanie obiektowe Prosz zwróci uwag na sposób dziaBania metody  WypiszInfo . W linii 60 zostaje wywoBana metoda klasy bazowej, natomiast w liniach 62, 64 zostaje wywoBana metoda klasy potomnej. Prosz zauwa|y, |e w linii 63 do zmiennej typu  Budynek zostaje przypisany obiekt  BudynekMieszkalny , a w linii 64 zostaje wywoBana metoda  WypiszInfo z klasy potomnej. ZadziaBaB tu mechanizm polimorfizmu. Metody z klasy bazowej, które mog zosta przesBonione przez metody o tej samej nazwie z klasy potomnej, nale|y oznaczy modyfikatorem  virtual (linia 25 w przykBadzie 2). Metody te s metodami wirtualnymi. Metody z klasy potomnej, które maj przesBoni metod o tej samej z klasy bazowej, nale|y oznaczy modyfikatorem  override (linia 49 w przykBadzie 2). 3. Kolekcja List<T> Kolekcje to pojcia stosowane w odniesieniu do klas, które umo|liwiaj przechowywanie oraz efektywne przetwarzanie obiektów danego typu. Jedn z najwikszych zalet kolekcji jest mo|liwo[ dynamicznej zmiany ich rozmiaru  liczba przechowywanych przez kolekcje elementów nie jest ograniczona w momencie utworzenia danej kolekcji, tak jak ma to miejsce w przypadku tablicy. Jednym z podstawowych typów kolekcji jest lista - List<T>. Proste operacje wykonywane na li[cie zostan przedstawione do celów niniejszego laboratorium. SzczegóBowe omówienie mo|liwo[ci listy i innych kolekcji nastpi na wykBadzie. Informacje dotyczce kolekcji List<T> niezbdne do wykonania zadania laboratoryjnego: ·ð Klasa List<T> zostaBa zdefiniowana w przestrzeni nazw  System.Collections.Generic . ·ð Litera  T oznacza typ obiektów przechowywanych przez list. ·ð Utworzenie obiektu listy odbywa si za pomoc konstrukcji: List<T> nazwaListy = new List<T>( ) gdzie  T stanowi nazw typu przechowywanego obiektu. ·ð Podstawowe metody i wBa[ciwo[ci listy prezentuje poni|szy przykBad: 3 Programowanie obiektowe PrzykBad 3  Metody kolekcji List<T> 4. UML  dziedziczenie na diagramie klas Dziedziczenie w jzyku UML oznaczane jest za pomoc strzaBki z pustym grotem wskazujcym na klas bazow. Rys. 1  Reprezentacja dziedziczenia jzyku UML 4 Programowanie obiektowe Zadanie 1. Prosz zrealizowa aplikacj obiektow, która powinna odznacza si nastpujcymi cechami: §ð Aplikacja powinna zawiera klasy zaimplementowane zgodnie z zamieszczonym poni|ej diagramem klas. §ð Metody  WypiszInfo powinny wypisywa na konsoli informacje na temat warto[ci wszystkich pól obiektów. §ð Metoda  WypiszInfo klasy  Osoba powinna by wirtualna, metody  WypiszInfo w klasach pochodnych ( Student ,  PiBkarz ), powinny j przesBania. §ð Metoda  StrzelGola powinna zwiksza o 1 warto[ pola  liczbaGoli . Aby zrealizowa zadanie nale|y wykona nastpujce kroki: §ð Prosz o implementacj klasy bazowej  Osoba , jej pól i metod. Prosz pamita o modyfikatorze  virtual , który powinna posiada metoda  WypiszInfo . §ð Prosz o implementacj klasy pochodnej  Student , jej pól i metod. Prosz pamita o modyfikatorze  override , który powinna posiada metoda  WypiszInfo . §ð Prosz o implementacj klasy pochodnej  Pilkarz , jej pól i metod. Prosz pamita o modyfikatorze  override , który powinna posiada metoda  WypiszInfo . §ð Prosz o przetestowanie poprawno[ci wykonania zadania za pomoc kodu testowego: 5 Programowanie obiektowe Przy ocenie zadania gBówny nacisk bdzie kBadziony na: §ð PrawidBow implementacj dziedziczenia. §ð PrawidBowy dobór modyfikatorów dostpu. Zadanie 2. Prosz zrealizowa aplikacj obiektow, która powinna odznacza si nastpujcymi cechami: §ð Aplikacja stanowi rozszerzenie aplikacji z zadania nr 1. §ð Aplikacja powinna zawiera klasy zaimplementowane zgodnie z zamieszczonym poni|ej diagramem klas. §ð Obiekty klasy  Student powinny przechowywa kolekcj obiektów klasy  Ocena za pomoc listy. §ð Metoda  DodajOcene ma dodawa ocen do listy ocen studenta. §ð Metoda  WypiszOceny( ) ma wypisywa informacje o wszystkich ocenach studenta. §ð Metoda  WypiszOceny(string nazwaPrzedmiotu) ma wypisywa informacje o ocenach studenta z przedmiotu o podanej nazwie. §ð Metoda  UsunOcene ma usuwa ocen studenta o podanych parametrach. §ð Metoda  UsunOceny( ) ma usuwa wszystkie oceny studenta. §ð Metoda  UsunOceny(string nazwaPrzedmiotu) ma usuwa wszystkie oceny studenta z przedmiotu o podanej nazwie. §ð Metoda  WypiszInfo z klasy  Student ma wypisywa tak|e informacje o wszystkich ocenach studenta. 6 Programowanie obiektowe Aby zrealizowa zadanie nale|y wykona nastpujce kroki: §ð Prosz o implementacj klasy  Ocena , jej pól i metod. §ð Prosz o implementacj w klasie  Student nastpujcego pola: Nastpnie prosz o doBczenie do projektu przestrzeni nazw  System.Colections.Generic , z której pochodzi u|ywana kolekcja typu  List<T> , poprzez dopisanie na pocztku kodu instrukcji: §ð Prosz o implementacj metody  DodajOcene w klasie  Student . Metoda ta ma tworzy nowy obiekt typu  Ocena i dodawa go do listy ocen za pomoc metody  Add obiektu typu  List<Ocena> . §ð Prosz o implementacj metody  WypiszOceny , która ma wypisywa na konsoli wszystkie oceny studenta. Metoda ta powinna by zaimplementowana przy u|yciu ptli  foreach lub ptli  for . W tym celu niezbdna bdzie tak|e implementacja odpowiednich wBa[ciwo[ci w klasie  Ocena . §ð Prosz o implementacj metody  WypiszOceny (string nazwaPrzedmiotu) , która ma wypisywa na konsoli wszystkie oceny studenta z przedmiotu o podanej nazwie. Metoda ta powinna by zaimplementowana przy u|yciu ptli  foreach lub ptli  for . §ð Prosz o implementacj metody  UsunOcene , która ma usuwa z listy ocen oceny o podanych parametrach. Do tego celu nale|y u|y ptli  for : 7 Programowanie obiektowe UWAGA! W jzyku C# istnieje prostszy sposób realizacji usunicia z kolekcji obiektów o podanych parametrach. Sposób ten zostanie przedstawiony na jednym z kolejnych wykBadów. §ð Prosz o implementacj metody  UsunOceny , która ma usuwa z listy ocen wszystkie oceny. Do tego celu nale|y u|y metody  Clear kolekcji typu  List<Ocena> . §ð Prosz o implementacj metody  UsunOceny (string nazwaPrzedmiotu) , która ma usuwa z listy ocen oceny z przedmiotu o podanej nazwie. §ð Prosz o modyfikacj metody  WypiszInfo z klasy  Student . Ma ona wypisywa tak|e list wszystkich ocen studenta. §ð Prosz o przetestowanie poprawno[ci wykonania zadania za pomoc poni|szego kodu, który ma zosta dodany do kodu testowego z poprzedniego zadania: Przy ocenie zadania gBówny nacisk bdzie kBadziony na: §ð Poprawn implementacj metod. 8 Programowanie obiektowe §ð PrawidBowy dobór modyfikatorów dostpu. Zadanie do domu. Prosz zrealizowa aplikacj obiektow, która powinna odznacza si nastpujcymi cechami: §ð Zadanie do domu jest rozszerzeniem zadania 1. §ð Ilustruje je poni|szy diagram klas. §ð Prosz o utworzenie klas  PilkarzNozny i  PilkarzReczny , które dziedzicz po klasie  Pilkarz . §ð Metoda  StrzelGola w klasie  PilkarzReczny ma wywoBywa metod  StrzelGola z klasy bazowej, a ponadto wypisywa na ekranie konsoli komunikat  Rczny strzeliB! . §ð Metoda  StrzelGola w klasie  PilkarzNozny ma wywoBywa metod  StrzelGola z klasy bazowej, a ponadto wypisywa na ekranie konsoli komunikat  No|ny strzeliB! . Uwagi: §ð Metoda  StrzelGola w klasie  Pilkarz powinna by wirtualna, a jej odpowiedniki w klasach potomnych powinny j przesBania. §ð Metody  StrzelGola z klas potomnych powinny odwoBywa si do swoich odpowiedników za pomoc sBowa kluczowego  base poprzez konstrukcj:  base.<nazwa metody> 9 Programowanie obiektowe Zagadnienia, które nale|y uzna za przyswojone w trakcie zaj. Po zajciach bdzie obowizywa praktyczna znajomo[: §ð Pojcia dziedziczenia i polimorfizmu. §ð Tworzenie metod wirtualnych i ich przesBanianie. §ð Wykonywanie prostych operacji na kolekcjach  List z przestrzeni nazw  System.Collections.Generic . §ð Przedstawienie dziedziczenia na diagramie klas. Zagadnienia do powtórzenia na nastpne zajcia. Przed kolejnymi zajciami nale|y powtórzy nastpujce zagadnienia: §ð Klasy abstrakcyjne. §ð Interfejsy. Wybrane aspekty dotyczce implementacji z wykorzystaniem jzyka Java. Rozwa|ane w ramach niniejszych zaj aspekty mog by implementowane w ró|norodnych technologiach sBu|cych do realizacji aplikacji obiektowych, m.in. jzyku JAVA. Zasadnicze ró|nice w korzystaniu z jzyków C# i JAVA w kontek[cie tematyki niniejszego laboratorium s nastpujce: §ð W jzyku Java dziedziczenie odbywa si przy u|yciu sBowa kluczowego  extends . §ð W jzyku Java odpowiednikiem sBowa kluczowego  base jest sBowo  super . §ð W jzyku Java wywoBanie konstruktora klasy bazowej odbywa si w ciele konstruktora klasy potomnej. §ð W jzyku Java nie istnieje modyfikator  virtual , ka|da metoda jest domy[lnie wirtualna. Z kolei analogie w korzystaniu z jzyka C# i JAVA w kontek[cie tematyki niniejszego laboratorium s nastpujce: §ð W jzyku Java równie| nie istnieje wielodziedziczenie klas. §ð Mechanizm dziedziczenia w jzyku Java odbywa si na takiej samej zasadzie, jak w jzyku C#. Uwagi szczegóBowe dotyczce implementacji w jzyku Java s nastpujce: §ð Poni|szy przykBad przedstawia implementacj dziedziczenia w jzyku Java. Jest odpowiednikiem przykBadu nr 1. 10 Programowanie obiektowe PrzykBad 4  dziedziczenie w jzyku Java §ð Poni|szy przykBad przedstawia mechanizm polimorfizmu w jzyku Java. Jest odpowiednikiem przykBadu nr 2. PrzykBad 5  polimorfizm w jzyku Java 11 Programowanie obiektowe 12

Wyszukiwarka

Podobne podstrony:
Laboratorium z PO Zestaw 05
Laboratorium z PO Zestaw 06
Laboratorium z PO Zestaw 01
2011 10 20 Zestaw 02
PO lab 02
Laboratorium elektrotechniki Ćwiczenie 02
Po prostu?cess 02 XP PL ppacxp
biologia zestaw 02
02 Stalinizacja życia w Polsce po II Wojnie Światowej
Kuchnia francuska po prostu (odc 02) Kiełbaski z soczewicą
Zestawy badań laboratoryjnych z Mechaniki Gruntów
Kuchnia francuska po prostu (odc 02) Kiełbaski nie całkiem w bułkach
Materiałoznawstwo laboratoria 28 02
zadania zestaw 3 ruch po okr
egzamin  02 2012 zestaw a

więcej podobnych podstron