Zad. 7: Fabryka obiektów i singleton

Podobne dokumenty
Zad. 7: Fabryka obiektów i singleton

Zad. 6: Sterowanie robotem mobilnym

Zad. 6: Sterowanie robotami mobilnymi w obecności przeszkód

Zad. 7: Sterowanie robotami mobilnymi w obecności przeszkód

Zad. 5: Sterowanie dronem

Zad. 5: Sterowanie robotem mobilnym

Zad. 4: Rotacje 2D. 1 Cel ćwiczenia. 2 Program zajęć. 3 Opis zadania programowego

Zad. 6: Sterowanie dronami w obecności przeszkód

Zad. 3: Rotacje 2D. Demonstracja przykładu problemu skończonej reprezentacji binarnej liczb

Zad. 7: Sterowanie manipulatorem przypadek 3D

Zad. 5: Rotacje 3D. 1 Cel ćwiczenia. 2 Program zajęć. 3 Opis zadania programowego

Zad. 5: Układ równań liniowych liczb zespolonych

Laboratorium nr 4: Arytmetyka liczb zespolonych

Zad. 3: Układ równań liniowych

Zad. 4: Rotacje 3D. 1 Cel ćwiczenia. 2 Program zajęć. 3 Opis zadania programowego

Zad. 4: Szablonu dla układu równań liniowych

Zad. 10: Sterowanie manipulatorem cz. 2 i 3

Zadanie nr 3: Sprawdzanie testu z arytmetyki

Zadanie 2: Arytmetyka symboli

Programowanie obiektowe

Programowanie obiektowe

Laboratorium nr 5: Mnożenie wektorów i macierzy

Zadanie nr 2: Arytmetyka liczb zespolonych

Programowanie obiektowe

Programowanie obiektowe

Zadanie polega na stworzeniu bazy danych w pamięci zapewniającej efektywny dostęp do danych baza osób.

System imed24 Instrukcja Moduł Analizy i raporty

Zad. 1: Sterowanie mimika

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska

Fragment wykładu z języka C ( )

Ćwiczenie nr 8 - Modyfikacje części, tworzenie brył złożonych

Baza danych sql. 1. Wprowadzenie

Podstawy Programowania Obiektowego

Aplikacje WWW - laboratorium

Laboratorium 7 Blog: dodawanie i edycja wpisów

5.4. Tworzymy formularze

TEMAT : KLASY DZIEDZICZENIE

Modelowanie obiektowe - Ćw. 1.

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2016/2017

Aplikacje w środowisku Java

Technologie i usługi internetowe cz. 2

Programowanie niskopoziomowe

Web frameworks do budowy aplikacji zgodnych z J2EE

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

Kancelaria 2.26 zmiany w programie czerwiec 2014

Iteracyjno-rozwojowy proces tworzenia oprogramowania Wykład 3 część 1

UWAGA!!! Przed przystąpieniem do zamknięcia roku proszę zrobić kopie bezpieczeństwa

Instrukcja integratora - obsługa dużych plików w epuap2

PRZEWODNIK PO PRZEDMIOCIE

Dziedziczenie. Zadanie 1

OPROGRAMOWANIE WSPOMAGAJĄCE ZARZĄDZANIE PROJEKTAMI. PLANOWANIE ZADAŃ I HARMONOGRAMÓW. WYKRESY GANTTA

Moduł rozliczeń w WinUcz (od wersji 18.40)

Księgarnia PWN: Andrzej Jaskulski - AutoCAD 2010/LT Podstawy projektowania parametrycznego i nieparametrycznego

Wzorce projektowe. dr inż. Marcin Pietroo

Platforma e-learningowa

Webowy generator wykresów wykorzystujący program gnuplot

Zdarzenia Klasa Application Powiadomienia Toast AlertDialog

WYPOŻYCZALNIA BY CTI INSTRUKCJA

Szablony funkcji i klas (templates)

PRZEWODNIK PO PRZEDMIOCIE

KS-ZSA. Korporacyjne grupy towarowe

Praca z widokami i nawigacja w pokazie

Modele danych walidacja widoki zorientowane na model

1.0 v2. INSTRUKCJA OBSŁUGI SAD EC Win - Moduł Ewidencja Banderol

konspekt pojedynczy slajd sortowanie slajdów strona notatek 1. Widok normalny/konspekt 2. Widok sortowania slajdów 3.

Ochrona zasobów. mechanizm ochrony polityka ochrony. 2. Domeny ochrony 3. Macierz dostępów 4. Implementacja macierzy dostępów

Wypożyczalnia VIDEO. Technologie obiektowe

Szablony funkcji i szablony klas

Technologie obiektowe

Instrukcja do pracowni specjalistycznej z przedmiotu. Obiektowe programowanie aplikacji

Zaawansowane programowanie w C++ (PCP)

Widoki zagnieżdżone, layout. 1. Wprowadzenie Repozytoria danych

Widżety KIWIPortal. tworzenie umieszczanie na stronach internetowych opcje zaawansowane. Autor: Damian Rebuś Data: Wersja: 1.

EAP XML Legislator Opis zmian w wersji Service Pack 41 ABC PRO Sp. z o.o.

REFERAT O PRACY DYPLOMOWEJ

Wykonać Ćwiczenie: Active Directory, konfiguracja Podstawowa

Rysunek 1: Okno timeline wykorzystywane do tworzenia animacji.

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Zaawansowane programowanie w C++ (PCP)

Laboratorium 1 - Programowanie proceduralne i obiektowe

2) W wyświetlonym oknie należy zaznaczyć chęć utworzenia nowej aplikacji (wygląd okna może się różnić od powyższego); kliknąć OK

KATEGORIA OBSZAR WIEDZY

Compas 2026 Vision Instrukcja obsługi do wersji 1.07

Tworzenie nowego rysunku Bezpośrednio po uruchomieniu programu zostanie otwarte okno kreatora Nowego Rysunku.

Generowanie dokumentów w ramach korespondencji seryjnej

Architektura Systemu. Architektura systemu umożliwia kontrolowanie iteracyjnego i przyrostowego procesu tworzenia systemu.

Smarty PHP. Leksykon kieszonkowy

Semestr letni Grafika inżynierska Nie

5. Praca z klasą. Dodawanie materiałów i plików. Etykieta tematu. Rozdział 5 Praca z klasą

Klasy Obiekty Dziedziczenie i zaawansowane cechy Objective-C

app/ - folder zawiera pliki konfiguracyjne dla całej aplikacji Można wybrać sposób zapisu konfiguracji: YML, XML, PHP

POLITECHNIKA ŚLĄSKA WYDZIAŁ ELEKTRYCZNY KATEDRA MECHATRONIKI

Szablony klas, zastosowanie szablonów w programach

Semestr letni Grafika inżynierska Nie

ColDis Poradnik użytkownika

Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania

Danuta ROZPŁOCH-NOWAKOWSKA Strona Moduł 4. Przykład 1. Przykład 2. HTML 4.01 Transitional).

KS-ZSA. Mechanizm centralnego zarządzania rolami

Karty pracy. Ustawienia. W tym rozdziale została opisana konfiguracja modułu CRM Karty pracy oraz widoki i funkcje w nim dostępne.

Transkrypt:

Zad. 7: Fabryka obiektów i singleton 1 Cel ćwiczenia Praktyczna realizacja wzorca projektowego fabryki obiektów i singletona. Utrwalenie umiejętności posługiwania się wskaźnikami współdzielonymi i wykorzystanie techniki rzutowania w górę oraz polimorfizmu. 2 Program zajęć Ocena realizacji zadania z poprzedniego laboratorium ocenie podlega poprawność realizacji zadania, styl pisania programu oraz dokumentacja wygenerowana za pomocą programu doxygen. Ocena przygotowania do zajęć ocenie podlega diagram klas. Modyfikacja programu wg wskazań osoby prowadzacej ocenie będzie podlegała poprawność realizacji modyfikacji. Pracę nad modyfikacją programu (wszystkie operacje wykonane muszą być na kopii) należy rozpocząć już w trakcie pierwszej fazy laboratorium, gdyż prowadzący nie będzie w stanie ocenić wcześniejszego programu wszystkim jednocześnie. Realizacja wstępnej fazy prac nad nowym zadaniem w ramach wstępnej realizacji zadania można zaadoptować dostarczone przykłady prezentowane w ramach wykładu. Ocena realizacji wstępnej fazy zadania 3 Opis zadania programowego Niniejsze zadanie jest dalszym rozszerzeniem wcześniejszego zadania. Program powinien umożliwiać dodawania obiektów takich jak przeszkody i drony. W tym celu w kodzie programu należy stworzyć klasę, która będzie realizowała wzorzec projektowy fabryki obiektów. Obiekt pełniący rolę fabryki obiektów powinien być tylko jeden. Należy to zagwarantować w odpowiedniej konstrukcji tej klasy poprzez realizację wzorca projektowego singleton. Ponadto program powinien również umożliwiać usunięcie wyselekcjonowanego drona. W wersji podstawowej można przyjąć, że nie można usunąć drona, gdy pozostał jeden obiekt tego typu. 4 Przygotowanie do zajęć Należy przygotować diagram klas proponowanych struktur danych oraz zapoznać się z przykładami dostarczonymi do wykładu. 5 Wymagania co do konstrukcji programu Oprócz wymagań sformułowanych w opisie zadania należy uwzględnić uwarunkowania przedstawione w dalszej części. 1

Należy zdefiniować klasę FabrykaObiektow, która implementuje wzorzec projektowy fabryki obiektów oraz singletona. Definicje klas mają być zawarta w osobnym pliku nagłówkowym, zaś definicje metod w osobnym module. Wszystkie obiekty klasy takie jak Dron i PrzeszkodaPr mają być tworzone w programie tylko i wyłącznie z wykorzystaniem singletona fabryki obiektów. Jednak nie oznacza to konieczności implementacji mechanizmów, które nie pozwalałby tworzyć tych obiektów w inny sposób. Fabryka obiektów powinna przechowywać domyślne współrzędne nowo tworzonego drona, jak też przeszkody. W tym drugim przypadku powinna przechowywać również domyślne rozmiary przeszkody. Wartości tych parametrów powinny być wykorzystane w momencie tworzenia obiektu. Powinna być też możliwość modyfikacji tych wartości przed utworzeniem nowego obiektu. Należy zmodyfikować definicje klas Dron i PrzeszkodaPr w taki sposób, aby nie można było tworzyć obiektów tej klasy nigdzie indziej poza fabryką obiektów. Program powinien zawierać dodatkowe pozycje w menu, które pozwolą na dodanie lub usunięcie drona oraz dodanie przeszkody. Operacja dodania drona lub przeszkody wiąże się określenie ich wstępnych parametrów. W przypadku drona będzie to położenie, zaś w przypadku przeszkody również jej rozmiary. Po wykonaniu operacji usunięcia drona zakładamy, że wyselekcjonowany zostaje Pierwszy dron z listy dronów. Operację usunięcia drona dopuszczamy tylko wtedy, gdy na liście dronów są co najmniej dwa drony. Program powinien zachować wszystkie funkcjonalności z poprzedniej wersji. Należy więc pamiętać, że: Tak jak we wcześniejszej wersji programu wszystkie obiekty klasy Dron oraz PrzeszkodaPr należy umieścić na jednej liście. Jako wskaźników w liście liście należy użyć wskaźników współdzielonych (shared_ptr<>). W obiekcie klasy ObiektSceny, podobnie jak w obiekcie klasy Wektor3D należy wprowadzić pole statyczne, które pozwoli zliczyć ile łącznie zostało utworzonych tego typu obiektów, oraz ile ich pozostało na końcu działania programu. W dobrze skonstruowanym programie, gdy program kończy swoje działanie, nie powinno już być żadnego obiektu tego typu. Oprócz tego pozostają w mocy wszystkie wcześniejsze wymagania dotyczące struktury katalogów, pliku Makefile, modułowej struktury programu, jak też opisów i generacji dokumentacji za pomocą systemu doxygen. 2

6 Przykład działania programu jkowalsk@panamint>./dron-przeszkody Laczna ilosc stworzonych obiektow klasy ObiektSceny: 4 Ilosc istniejacych obiektow klasy ObiektSceny: 4 Laczna ilosc stworzonych obiektow klasy Wektor3D: 321 Ilosc istniejacych obiektow klasy Wektor3D: 128 Aktualnie wyselekcjonowanym dronem jest: Dron 1. Wspolrzedne: (50.0, 100.0, 20.0) D - dodaj drona P - dodaj przeszkode U - usun wyselekcjonowanego drona o - obrot drona j - lot na wprost s - selekcja drona w - wyswietl ponownie menu k - zakoncz dzialanie programu Twoj wybor (w - wyswietl menu)> D Podaj docelowe wspolrzedne drona: x y z > -60,50,30 Laczna ilosc stworzonych obiektow klasy ObiektSceny: 5 Ilosc istniejacych obiektow klasy ObiektSceny: 5 Laczna ilosc stworzonych obiektow klasy Wektor3D: 388 Ilosc istniejacych obiektow klasy Wektor3D: 184 Twoj wybor (w - wyswietl menu)> P Podaj docelowe wspolrzedne srodka przeszkody wspolrzedne x, y, z > 85 0 40 Podaj wymiary przeszkody wzdluz osi OX, OY, OZ wymiar_x, wymiar_y, wymiar_z > 10 60 60 Laczna ilosc stworzonych obiektow klasy ObiektSceny: 6 Ilosc istniejacych obiektow klasy ObiektSceny: 6 Laczna ilosc stworzonych obiektow klasy Wektor3D: 424 Ilosc istniejacych obiektow klasy Wektor3D: 192 3

Twoj wybor (w - wyswietl menu)> U Aktualnie wyselekcjonowanym dronem jest: Dron 1. Wspolrzedne: (50.0, 100.0, 20.0) Czy na pewno usunac tego drona? (t/n)> t Drona usunieto Aktualnie wyselekcjonowanym dronem jest: Dron 1. Wspolrzedne: (0.0, 0.0, 0.0) Laczna ilosc stworzonych obiektow klasy ObiektSceny: 6 Ilosc istniejacych obiektow klasy ObiektSceny: 5 Laczna ilosc stworzonych obiektow klasy Wektor3D: 424 Ilosc istniejacych obiektow klasy Wektor3D: 136 Twoj wybor (w - wyswietl menu)> k Koniec dzialania programu. Laczna ilosc stworzonych obiektow klasy ObiektSceny: 6 Ilosc istniejacych obiektow klasy ObiektSceny: 0 Laczna ilosc stworzonych obiektow klasy Wektor3D: 424 Ilosc istniejacych obiektow klasy Wektor3D: 0 jkowalsk@panamint> _ 7 Uproszczenia Wykorzystanie poniższych uproszczeń powoduje obniżenie oceny, jednak wciąż pozwala zaliczyć niniejsze ćwiczenie. 7.1 Brak usuwania dronów Można zreazygnować z usuwania dronów. 7.2 Brak singletona Można zrezygnować z implementacji singletona. 8 Proponowane rozszerzenia Możliwych jest kilka wariantów rozszerzenia tego zadania. 4

8.1 Uniemożliwienie tworzenie obiektów w inny sposób niż przez fabrykę Klasy Dron i PrzeszkodaPr oraz Fabryka muszą mieć zaimplementowane takie mechanizmy, które zagwarantują, że obiekty klas Dron i PrzeszkodaPr będą mogły być tworzone tylko i wyłącznie przez fabrykę. Przykład takiego rozwiązania znajduje się w plikach kpo-przyklady-12.tgz i kpo-przyklady-12.zip (pliki dostarczone jako przykłady do wykładu nr 12) w podkartotece 06-hermetyczna-fabryka. 8.2 Możliwość usuwania przeszkód w trakcie działania programu Program powinien umożliwiać usuwanie wyselekcjonowanej przeszkody. 8.3 Przeszkody różnego typu Program powinien mieć możliwość dodawania dodatkowych rodzai przeszkód takich jak ścianka lub pręt. W tym celu należy stworzyć odpowiednie klasy, które będą modelowały każdy z rodzai tych przeszkód. 9 Wymagania i zarys programu zajęć w okresie realizacji zadania Przystępując do pracy nad programem zaleca się, aby rozszerzenie menu programu zrealizować na samym końcu, gdy stworzymy już i przetestujemy wszystkie niezbędne funkcjonalności. 9.1 Tydzień 0 Należy przygotować diagram klas. 9.2 Tydzień 1 Przed zajęciami muszą zostać przygotowane następujące elementy zadania. Wszystko co będzie ponad to będzie oceniane in plus (oprócz menu programu). Zdefiniowane powinna być klasa FabrykaObiektow z najistotniejszymi metodami. Należy zwrócić uwagę, że metoda tworząca obiekt powinna zwracać wskaźnik współdzielony na obiekt klasy bazowej zarówno dla klasy Dron, jak też klasy PrzeszkodaPr. Tak więc powinien to być wskaźnik na klasę ObiektSceny. Klasa FabrykaObiektow musi też mieć odpowiednie metody zapewniające modyfikację domyślnych wartości parametrów określających położenie, a w przypadku przeszkód również ich rozmiar. W programie wszystkie obiekty klasy Dron czy też PrzeszkodaPr powinny być stworzone za pomocą wspomnianej fabryki obiektów. Warunkiem koniecznym pozytywnej oceny jest poprawna kompilacja. W trakcie kompilacji nie powinny być generowane żadne ostrzeżenia. Wszystkie klasy i metody muszą być opisane oraz powinna być generowana dokumentacja za pomocą programu doxygen. 5

9.3 Tydzień 2 Rozliczenie się z gotowego programu. 6