Zad. 7: Fabryka obiektów i singleton

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

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

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

Zad. 6: Sterowanie robotem mobilnym

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

Zad. 5: Sterowanie robotem mobilnym

Zad. 5: Sterowanie dronem

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. 3: Układ równań liniowych

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

Laboratorium nr 4: Arytmetyka liczb zespolonych

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

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

Zadanie nr 2: Arytmetyka liczb zespolonych

Programowanie obiektowe

Zadanie 2: Arytmetyka symboli

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

Zad. 1: Sterowanie mimika

Programowanie obiektowe

Fragment wykładu z języka C ( )

System imed24 Instrukcja Moduł Analizy i raporty

Baza danych sql. 1. Wprowadzenie

5.4. Tworzymy formularze

Kancelaria 2.26 zmiany w programie czerwiec 2014

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

Laboratorium 7 Blog: dodawanie i edycja wpisów

Modelowanie obiektowe - Ćw. 1.

Programowanie obiektowe

Modele danych walidacja widoki zorientowane na model

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

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

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

Programowanie obiektowe

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

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

Programowanie niskopoziomowe

Platforma e-learningowa

WYPOŻYCZALNIA BY CTI INSTRUKCJA

ColDis Poradnik użytkownika

Pokaz slajdów na stronie internetowej

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

Instalacja i obsługa aplikacji MAC Diagnoza EW

Jak przygotować pliki gotowe do publikacji w sieci za pomocą DigitLabu?

Laboratorium 1 - Programowanie proceduralne i obiektowe

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

Aplikacje WWW - laboratorium

Podstawy Programowania Obiektowego

Compas 2026 Vision Instrukcja obsługi do wersji 1.07

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

KATEGORIA OBSZAR WIEDZY

SPORZĄDZENIE WARIANTÓW ROZMIESZCZENIA ELEMENTÓW W ZAMKNIĘTEJ PRZESTRZENI DLA ZADANYCH KRYTERIÓW ICH LOKALIZACJI

Układ równań liniowych

Moduł rozliczeń w WinUcz (od wersji 18.40)

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

Generowanie dokumentów w ramach korespondencji seryjnej

DARMOWA PRZEGLĄDARKA MODELI IFC

Zdarzenia Klasa Application Powiadomienia Toast AlertDialog

Generowanie parametrycznych konstrukcji ramowych w środowisku Autodesk Inventor 2014

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

Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady

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

POLITECHNIKA ŚLĄSKA WYDZIAŁ ELEKTRYCZNY KATEDRA MECHATRONIKI

Program powinien otworzyć się z pierwszym formularzem. Jeśli nie, otwórz pierwszy formularz, wybierając go z listy - Shift+F12.

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

Instrukcja do pracowni specjalistycznej z przedmiotu. Obiektowe programowanie aplikacji

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

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

KS-ZSA. Korporacyjne grupy towarowe

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

Wzorce projektowe. dr inż. Marcin Pietroo

REFERAT O PRACY DYPLOMOWEJ

Rysunek 1: Okno timeline wykorzystywane do tworzenia animacji.

Kod Nazwa Prefiks dokumentu przyjęcia do magazynu, wydania z magazynu oraz przesunięć międzymagazynowych Kolejne przyjęcie, rozchód, przesunięcie nr

Web frameworks do budowy aplikacji zgodnych z J2EE

Praca z widokami i nawigacja w pokazie

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

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

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

62. Redagowanie rzutów 2D na podstawie modelu 3D

Wykonać Ćwiczenie: Active Directory, konfiguracja Podstawowa

1.Formatowanie tekstu z użyciem stylów

PRZEWODNIK PO PRZEDMIOCIE

Instrukcja z przedmiotu: Zarządzanie dokumentacją techniczną

Ćwiczenie 6 Animacja trójwymiarowa

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec

Data wydania: Projekt współfinansowany przez Unię Europejską ze środków Europejskiego Funduszu Społecznego

Data wydania: Projekt współfinansowany przez Unię Europejską ze środków Europejskiego Funduszu Społecznego

Opis zmian w wersji aplikacji Cyfrowe Repozytorium Dokumentów

PROE wykład 3 klasa string, przeciążanie funkcji, operatory. dr inż. Jacek Naruniec

Projektowanie 3D Tworzenie modeli przez wyciągnięcie profilu po krzywej SIEMENS NX Sweep Along Guide

Wykład 9: Polimorfizm i klasy wirtualne

Programowanie obiektowe - zadania

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. 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 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 Ilosc istniejacych obiektow klasy ObiektSceny: 6 Ilosc istniejacych obiektow klasy Wektor3D: 192 3

Twoj wybor (w - wyswietl menu)> U Dron 1. Wspolrzedne: (50.0, 100.0, 20.0) Czy na pewno usunac tego drona? (t/n)> t Drona usunieto Dron 1. Wspolrzedne: (0.0, 0.0, 0.0) Ilosc istniejacych obiektow klasy ObiektSceny: 5 Ilosc istniejacych obiektow klasy Wektor3D: 136 Twoj wybor (w - wyswietl menu)> k Koniec dzialania programu. Ilosc istniejacych obiektow klasy ObiektSceny: 0 Ilosc istniejacych obiektow klasy Wektor3D: 0 jkowalsk@panamint> _ 7 Proponowane rozszerzenia Możliwych jest kilka wariantów rozszerzenia tego zadania. 7.1 Możliwość usuwania przeszkód w trakcie działania programu Program powinien umożliwiać usuwanie wyselekcjonowanej przeszkody. 7.2 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. 8 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. 4

8.1 Tydzień 0 Należy zaadaptować dostarczone przykłady prezentowane w ramach wykładu, do problemu opisanego w niniejszym zadaniu. 8.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. 8.3 Tydzień 2 Rozliczenie się z gotowego programu. 5