Programowanie obiektowe

Podobne dokumenty
Wstęp do programowania


Programowanie obiektowe

Programowanie obiektowe

Programowanie i projektowanie obiektowe

Programowanie i projektowanie obiektowe

Programowanie i projektowanie obiektowe

Zaawansowany kurs języka Python

Programowanie i projektowanie obiektowe

Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04

Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop Spis treści

Programowanie obiektowe

Wstęp do programowania

Kurs rozszerzony języka Python

Programowanie obiektowe

Programowanie i projektowanie obiektowe

Programowanie w Sieci Internet. Python: Wątki. Kraków, 12 grudnia 2014 r. mgr Piotr Rytko Wydział Matematyki i Informatyki

Podstawy programowania III WYKŁAD 4

Wstęp do programowania

Zaawansowany kurs języka Python

Wstęp do programowania

Analiza i projektowanie oprogramowania. Analiza i projektowanie oprogramowania 1/32

KOLEJKA (QUEUE) (lista fifo first in, first out)

Struktury danych: stos, kolejka, lista, drzewo

Sortowanie przez wstawianie Insertion Sort

Bazy danych i usługi sieciowe

Wstęp do programowania

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Regulator PID w sterownikach programowalnych GE Fanuc

Programowanie i projektowanie obiektowe

Zaawansowane programowanie obiektowe - wykład 5

Zaawansowany kurs języka Python

PHP 5 język obiektowy

Programowanie i projektowanie obiektowe

Zofia Kruczkiewicz, Programowanie obiektowe - java, wykład 2 1

Wstęp do programowania 2

Wprowadzenie do programowania

W ramach zadania należy wykorzystać funkcje wirtualne. W programach testujących należy wykorzystać klasy stworzone w ramach pierwszego zadania.

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

Kurs wybieralny: Zastosowanie technik informatycznych i metod numerycznych w elektronice

Warstwa integracji. wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe.

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 8. Karol Tarnowski A-1 p.

Kurs rozszerzony języka Python

Paweł Kurzawa, Delfina Kongo

Kurs programowania. Wykład 12. Wojciech Macyna. 7 czerwca 2017

Programowanie i projektowanie obiektowe

Wykład 4. Klasa List Kolejki Stosy Słowniki

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

Języki i metody programowania

Wykresy i interfejsy użytkownika

Ćwiczenie 5. Python 3: Programowanie obiektowe i dziedziczenie

Programowanie obiektowe

Wstęp do programowania

Programowanie i struktury danych. Wykład 4 Dr Piotr Cybula

Technologie obiektowe

Dekoratora używa się wstawiając linijkę zaczynającą się przed definicją dekorowanego obiektu (klasy czy funkcji).

Podstawy Programowania Obiektowego

Lista, Stos, Kolejka, Tablica Asocjacyjna

Bazy danych w sterowaniu

Kurs rozszerzony języka Python

Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r.

Technologie i usługi internetowe cz. 2

Zagadnienia egzaminacyjne AUTOMATYKA I ROBOTYKA. Stacjonarne I-go stopnia TYP STUDIÓW STOPIEŃ STUDIÓW SPECJALNOŚĆ

Techniki programowania INP001002Wl rok akademicki 2017/18 semestr letni. Wykład 7. Karol Tarnowski A-1 p.

Dostawa oprogramowania. Nr sprawy: ZP /15

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)

Algorytmy i. Wykład 3: Stosy, kolejki i listy. Dr inż. Paweł Kasprowski. FIFO First In First Out (kolejka) LIFO Last In First Out (stos)

Struktura danych. Sposób uporządkowania informacji w komputerze. Na strukturach danych operują algorytmy. Przykładowe struktury danych:

Wstęp do programowania

Jerzy Nawrocki, Wprowadzenie do informatyki

zna metody matematyczne w zakresie niezbędnym do formalnego i ilościowego opisu, zrozumienia i modelowania problemów z różnych

Klasy Obiekty Dziedziczenie i zaawansowane cechy Objective-C

Podstawy Automatyki. Wykład 6 - Miejsce i rola regulatora w układzie regulacji. dr inż. Jakub Możaryn. Warszawa, Instytut Automatyki i Robotyki

Wprowadzenie do projektu QualitySpy

Modelowanie i Programowanie Obiektowe

Kurs języka Python. Wątki

Programowanie i projektowanie obiektowe

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

OpenAI Gym. Adam Szczepaniak, Kamil Walkowiak

Laboratorium nr 12. Temat: Struktury, klasy. Zakres laboratorium:

Modelowanie rynków finansowych z wykorzystaniem pakietu R

E S - uniwersum struktury stosu

Planowanie przydziału procesora

Planowanie przydziału procesora

Programowanie obiektowe

Algorytmy i złożoności. Wykład 3. Listy jednokierunkowe

Zagadnienia (1/3) Data-flow diagramy przepływów danych ERD diagramy związków encji Diagramy obiektowe w UML (ang. Unified Modeling Language)

Analiza i projektowanie obiektowe 2016/2017. Wykład 10: Tworzenie projektowego diagramu klas

Metody symulacji komputerowych Modelowanie systemów technicznych

Specjalność: Komputerowe systemy sterowania i diagnostyki

Programowanie obiektowe

GUI - projektowanie interfejsów cz. II

Programowanie obiektowe

Python. Skąd taka nazwa? Kurs systemu UNIX 1

Język programowania zbiór reguł określających, które ciągi symboli tworzą program komputerowy oraz jakie obliczenia opisuje ten program.

Zofia Kruczkiewicz - Modelowanie i analiza systemów informatycznych 1

Transkrypt:

Programowanie obiektowe Symulacje Paweł Daniluk Wydział Fizyki Jesień 2015 P. Daniluk (Wydział Fizyki) PO w. VIII Jesień 2015 1 / 20

Czas Paradygmat obiektowy doskonale nadaje się do opisywania struktury i stanu dużych systemów. Niestety takie systemy rzadko kiedy pozostają niezmienne w czasie. P. Daniluk (Wydział Fizyki) PO w. VIII Jesień 2015 2 / 20

Czas Paradygmat obiektowy doskonale nadaje się do opisywania struktury i stanu dużych systemów. Niestety takie systemy rzadko kiedy pozostają niezmienne w czasie. Atrybuty Przechowują aktualny stan. Metody Odpowiadają za aktualizację stanu. P. Daniluk (Wydział Fizyki) PO w. VIII Jesień 2015 2 / 20

Czas Paradygmat obiektowy doskonale nadaje się do opisywania struktury i stanu dużych systemów. Niestety takie systemy rzadko kiedy pozostają niezmienne w czasie. Atrybuty Przechowują aktualny stan. Metody Odpowiadają za aktualizację stanu. Jak reprezentować czas? P. Daniluk (Wydział Fizyki) PO w. VIII Jesień 2015 2 / 20

Czas Paradygmat obiektowy doskonale nadaje się do opisywania struktury i stanu dużych systemów. Niestety takie systemy rzadko kiedy pozostają niezmienne w czasie. Atrybuty Przechowują aktualny stan. Metody Odpowiadają za aktualizację stanu. Jak reprezentować czas? Skąd wiadomo kiedy jakie metody mają być wywoływane? P. Daniluk (Wydział Fizyki) PO w. VIII Jesień 2015 2 / 20

Czas ciągły, czy dyskretny? Zazwyczaj jest możliwe określenie stanu układu w dowolnej chwili, ale nie zawsze jest to niezbędne. Niektóre stany można bez straty dokładności ze sobą utożsamić. Przykłady Pociąg zajmuje odcinek toru, nie trzeba wiedzieć, gdzie dokładnie jest. Podwozie samolotu jest otwarte, zamknięte lub w trakcie otwierania/zamykania. Jeżeli pewne stany są jednakowe, istotne są jedynie momenty przechodzenia pomiędzy nimi. P. Daniluk (Wydział Fizyki) PO w. VIII Jesień 2015 3 / 20

Czas ciągły (stały krok czasowy) Symulacja oblicza stan układu w kolejnych krokach czasowych t 1, t 2, t 3,... ( t = t i+1 t i ). Kolejny stan obliczany jest na podstawie poprzedniego (lub kilku poprzednich). Jeżeli układ zawiera wiele niezależnych obiektów, konieczne jest zaimplementowanie oddziaływań pomiędzy nimi. W przypadku modeli opartych o równania różniczkowe zwyczajne (ODE) algorytm całkowania można zawrzeć w osobnej klasie. Konieczne może być utrzymywanie nienaruszonego stanu poprzedniego S ti, dopóki S ti+1 nie zostanie obliczony w całości. P. Daniluk (Wydział Fizyki) PO w. VIII Jesień 2015 4 / 20

Przykłady Proces Markowa Ciąg zmiennych losowych X 1, X 2, X 3,... P(X n+1 = j X n = i) = p i,j Równania Hamiltona Całkowanie leapfrog p i dt = H x i, x i dt = H p i F i x i+1 = x i + p i t + 1 t 2 m i 2 m i v i+1 = v i + 1 F i + F i+1 t 2 m i P. Daniluk (Wydział Fizyki) PO w. VIII Jesień 2015 5 / 20

Przykładowy projekt System compute_forces(state) iter () step(state) uses comprises 1 has m Particle interaction_force(part, state) get_p(state) set_p(state, val) get_x, set_x get_f, set_f Integrator step(system, state) 1..* State Pętla główna s t a t e=s t a r t i n g _ s t a t e f o r i i n range ( n_steps ) : s t a t e=system. s t e p ( s t a t e ) s t a t i s t i c s. add ( s t a t e ) P. Daniluk (Wydział Fizyki) PO w. VIII Jesień 2015 6 / 20

Zastosowania symulacje układów fizycznych w tym dynamiki molekularne gry komputerowe symulacje finansowe P. Daniluk (Wydział Fizyki) PO w. VIII Jesień 2015 7 / 20

Czas dyskretny Zdarzenia Zmiana stanu systemu następuje na skutek zajścia zdarzenia. Zdarzenie może powodować wystąpienie kolejnych zdarzeń w przyszłości. Czas Każde zdarzenie zachodzi w konkretnym czasie. Czas wystąpienia zdarzenia można obliczyć na podstawie zdarzeń je poprzedzających. Zdarzenia zachodzą nieuchronnie. P. Daniluk (Wydział Fizyki) PO w. VIII Jesień 2015 8 / 20

Zdarzenia Przykłady Pociąg wyjeżdża ze stacji. Wiadomo, że za czas potrzebny do przejechania toru dojedzie do następnej. Kulka leci w kierunku ściany. Kiedy doleci, odbije się w przeciwnym kierunku. Wykład rozpoczął się. Skończy się za 1.5h. Obsługę zdarzeń implementuje się jako metody w klasach obiektów, których dotyczą. Zdarzenie jest obiektem, który zna: czas zajścia metodę (funkcję), która ma zostać wykonana argumenty do przekazania P. Daniluk (Wydział Fizyki) PO w. VIII Jesień 2015 9 / 20

Przypomnienie Kolejka Struktura danych pozwalająca na wstawianie elementów (operacja Enqueue) i pobieranie najwcześniej wstawionego elementu (operacja Dequeue) (FIFO First In First Out) Kolejka priorytetowa Kolejka, w której Dequeue powoduje pobranie elementu o najwyższym priorytecie niezależnie od tego, kiedy był wstawiony. P. Daniluk (Wydział Fizyki) PO w. VIII Jesień 2015 10 / 20

Kolejka zdarzeń Zdarzenia, które mają nastąpić, są wstawiane do kolejki. Każdorazowo pobierane jest zdarzenie najwcześniejsze. W szczególności możliwe jest wstawienie nowego zdarzenia, które ma nastąpić przed zdarzeniami już zarejestrowanymi. Jest to naturalne zastosowanie kolejki priorytetowej. P. Daniluk (Wydział Fizyki) PO w. VIII Jesień 2015 11 / 20

Odpowiedzialność kaskadowa 1 Zdarzenie danego rodzaju może być obsłużone przez więcej niż jeden obiekt. 2 Obiekty niezależnie podejmują decyzję, czy obsłużą zdarzenie. 3 Nieobsłużone zdarzenie przechodzi do następnego obiektu. Przykłady zastosowań 1 graficzne interfejsy użytkownika 2 filtrowanie 3 symulacje procedur zarządzania P. Daniluk (Wydział Fizyki) PO w. VIII Jesień 2015 12 / 20

Implementacja w Pythonie Zdarzenia Krotka, albo obiekt mający następujące atrybuty: czas Przykład metoda (funkcja) lista argumentów e1 =(23, t r a i n 1. l e a v e, [ t r a c k, s p e e d _ l i m i t ] ) e1 [ 1 ] ( e1 [ 2 ] ) # t r a i n 1. l e a v e ( t r a c k, s p e e d _ l i m i t ) P. Daniluk (Wydział Fizyki) PO w. VIII Jesień 2015 13 / 20

Implementacja w Pythonie Kolejka priorytetowa Listy w Pythonie mają metodę sort(), którą można wywoływać po każdym wstawieniu do listy. Sortowanie może być wykonywane według dowolnego klucza. Porządek sortowania ustala się przez opcjonalne argumenty key i reverse. Przykłady >>> sorted("this is a test string from Andrew".split(), key=str.lower) [ a, Andrew, from, is, string, test, This ] >>> student_tuples = [ ( john, A, 15), ( jane, B, 12), ( dave, B, 10), ] >>> sorted(student_tuples, key=lambda student: student[2]) # sort by age [( dave, B, 10), ( jane, B, 12), ( john, A, 15)] P. Daniluk (Wydział Fizyki) PO w. VIII Jesień 2015 14 / 20

Przykłady c.d. >>> class Student: def init (self, name, grade, age): self.name = name self.grade = grade self.age = age def repr (self): return repr((self.name, self.grade, self.age)) >>> student_objects = [ Student( john, A, 15), Student( jane, B, 12), Student( dave, B, 10), ] >>> sorted(student_objects, key=lambda student: student.age) # sort by age [( dave, B, 10), ( jane, B, 12), ( john, A, 15)] P. Daniluk (Wydział Fizyki) PO w. VIII Jesień 2015 15 / 20

Przykłady c.d. >>> from operator import itemgetter, attrgetter >>> sorted(student_tuples, key=itemgetter(2)) [( dave, B, 10), ( jane, B, 12), ( john, A, 15)] >>> sorted(student_objects, key=attrgetter( age )) [( dave, B, 10), ( jane, B, 12), ( john, A, 15)] >>> sorted(student_tuples, key=itemgetter(1,2)) [( john, A, 15), ( dave, B, 10), ( jane, B, 12)] >>> sorted(student_objects, key=attrgetter( grade, age )) [( john, A, 15), ( dave, B, 10), ( jane, B, 12)] P. Daniluk (Wydział Fizyki) PO w. VIII Jesień 2015 16 / 20

Implementacja w Pythonie Kolejka priorytetowa Alternatywnie można zastosować moduł heapq. Przykłady >>> h = [] >>> heapq.heappush(h, (5, write code )) >>> heapq.heappush(h, (7, release product )) >>> heapq.heappush(h, (1, write spec )) >>> heapq.heappush(h, (3, create tests )) >>> heapq.heappop(h) (1, write spec ) P. Daniluk (Wydział Fizyki) PO w. VIII Jesień 2015 17 / 20

Czas rzeczywisty Symulacje czasu rzeczywistego Upływ czasu symulowanego układu odpowiada rzeczywistemu (potencjalnie przeskalowanemu) czasowi modelowanych procesów. Jest to istotne np. przy wizualizacji. Zdarzenia pochodzące z zewnątrz Interakcja z użytkownikiem Sygnały z urządzeń pomiarowych Systemy czasu rzeczywistego Przetwarzanie sygnałów zewnętrznych z zachowaniem ścisłych limitów czasowych. Np. autopilot, ABS, sterowanie procesem produkcyjnym. P. Daniluk (Wydział Fizyki) PO w. VIII Jesień 2015 18 / 20

Zdarzenia jeszcze raz Formalizmu związanego ze zdarzeniami można również używać do rejestrowania przeszłości poprzez zapamiętywanie zmian przyrostowych. Dzięki temu można odtworzyć stan z przeszłości bez konieczności przechowywania wszystkich minionych stanów w całości. Przykłady operacje na dokumentach transakcje P. Daniluk (Wydział Fizyki) PO w. VIII Jesień 2015 19 / 20

Systemy wieloagentowe Agent Autonomiczna jednostka (program, obiekt) zdolna do: postrzegania środowiska podejmowania decyzji wchodzenia w interakcję ze środowiskiem Dodatkowo agenty mogą: komunikować się uczyć Symulacje Istnieją środowiska dedykowane do implementacji systemów wieloagentowych zapewniające niezależną równoległą pracę agentów. Takie środowisko można również symulować. P. Daniluk (Wydział Fizyki) PO w. VIII Jesień 2015 20 / 20