Oprogramowanie w eksperymentach fizyki. Wykład 4, Paweł Staszel



Podobne dokumenty
Wykład 8: klasy cz. 4

Instrukcja do pracowni specjalistycznej z przedmiotu. Obiektowe programowanie aplikacji

.NET Klasy, obiekty. ciąg dalszy

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

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

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Kurs WWW. Paweł Rajba.

Klasa jest nowym typem danych zdefiniowanym przez użytkownika. Najprostsza klasa jest po prostu strukturą, np

Dokumentacja do API Javy.

Informatyka 1. Plan dzisiejszych zajęć. zajęcia nr 1. Elektrotechnika, semestr II rok akademicki 2008/2009

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

Języki i techniki programowania Ćwiczenia 3 Dziedziczenie

Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

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

Podstawy Programowania Obiektowego

Języki i techniki programowania Ćwiczenia 2

Programowanie w C++ Wykład 13. Katarzyna Grzelak. 4 czerwca K.Grzelak (Wykład 13) Programowanie w C++ 1 / 26


Funkcje w PL/SQL Funkcja to nazwany blok języka PL/SQL. Jest przechowywana w bazie i musi zwracać wynik. Z reguły, funkcji utworzonych w PL/SQL-u

2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

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

Materiał Typy zmiennych Instrukcje warunkowe Pętle Tablice statyczne Wskaźniki Tablice dynamiczne Referencje Funkcje

Programowanie obiektowe

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

> C++ dziedziczenie. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki

PARADYGMATY PROGRAMOWANIA Wykład 2

Klasy abstrakcyjne i interfejsy

Ćwiczenie 3 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz

Programowanie obiektowe

Język C++ Programowanie obiektowe

Konstruktor destruktor Programowanie obiektowe

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

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi

Podstawy Programowania semestr drugi. Wykład czternasty

Oracle PL/SQL. Paweł Rajba.

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

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

Wykład 9 Kolekcje, pliki tekstowe, Przykład: Notatnik

Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04

PARADYGMATY PROGRAMOWANIA Wykład 3

public: // interfejs private: // implementacja // składowe klasy protected: // póki nie będziemy dziedziczyć, // to pole nas nie interesuje

PARADYGMATY PROGRAMOWANIA Wykład 4

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

Różne właściwości. Różne właściwości. Różne właściwości. C++ - klasy. C++ - klasy C++ - KLASY

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej

Programowanie obiektowe

Zaawansowane programowanie w C++ (PCP)

Programowanie w C++ Wykład 6. Katarzyna Grzelak. 1 kwietnia K.Grzelak (Wykład 6) Programowanie w C++ 1 / 43

L E X. Generator analizatorów leksykalnych

C++ - [4-7] Polimorfizm

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

Programowanie Obiektowe i C++

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Podstawy Programowania

Tabela wewnętrzna - definicja

Programowanie obiektowe - 1.

Operatory na rzecz typu TString

Dziedziczenie jednobazowe, poliformizm, tablice wskaźników na obiekty

Tablicę 2-wymiarową można przedstawić jako pewien zestaw tablic 1-wymiarowych np.:

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

Struktury systemów operacyjnych Usługi, funkcje, programy. mgr inż. Krzysztof Szałajko

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.

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

Programowanie i struktury danych

C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów

Podstawy programowania. Podstawy C# Tablice

Kompletna dokumentacja kontenera C++ vector w -

TECHNOLOGIE INTERNETOWE WYKŁAD 6. JavaScript Funkcje i obiekty

Programowanie w C++ Wykład 12. Katarzyna Grzelak. 28 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27

Programowanie w C++ Wykład 12. Katarzyna Grzelak. 20 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 32

Język Java część 2 (przykładowa aplikacja)

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

Programowanie w C++ Wykład 7. Katarzyna Grzelak. 23 kwietnia K.Grzelak (Wykład 7) Programowanie w C++ 1 / 40

Systemy operacyjne. Laboratorium 9. Perl wyrażenia regularne. Jarosław Rudy Politechnika Wrocławska 28 lutego 2017

Interfejsy i klasy wewnętrzne

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

1. Zarządzanie informacją w programie Access

Technologie i usługi internetowe cz. 2

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać

Dziedziczenie. Ogólna postać dziedziczenia klas:

Programowanie obiektowe. Dr hab. Inż. Marta Gładysiewicz-Kudrawiec Pokój 229 A1 Operatory new delete pliki-odczyt

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

Projektowanie oprogramowania cd. Projektowanie oprogramowania cd. 1/34

Programowanie w C++ Wykład 11. Katarzyna Grzelak. 13 maja K.Grzelak (Wykład 11) Programowanie w C++ 1 / 30

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Pliki. Informacje ogólne. Obsługa plików w języku C

C++ Przeładowanie operatorów i wzorce w klasach

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.

Zaawansowane programowanie obiektowe - wykład 5

dr inż. Jarosław Forenc

Zapis algorytmów: schematy blokowe i pseudokod 1

Wykład 5 Wybrane zagadnienia programowania w C++ (c.d.)

Wprowadzenie do programowania

Definicje. Algorytm to:

Programowanie i projektowanie obiektowe

Wprowadzenie do projektu QualitySpy

Programowanie obiektowe w języku C++ Zarządzanie procesami. dr inż. Jarosław Forenc. Przeładowanie (przeciążanie) operatorów

Transkrypt:

Oprogramowanie w eksperymentach fizyki Wykład 4, Paweł Staszel

Plan 1. Obiekty (klasy) danych 2. Kontenery danych (data containers) 3. Moduły obiekty operujące na danych 4. Kontenery modułów (module containers) 5. Konstruowanie programów (rekonstrukcja śladów) używając modułów klasa typy singleton: MainModule 6. Struktura programu głównego: bratmain 2

BRAT moduły brat/modules klasy które przetwarzają dane: dig -> rdo -> tory lokalne -> tory globalne -> dst -> zrekonstruowane zdarzenia fizyczne. Klasy danych: definiują strukturę danych Moduły: definiują algorytm(y) przetwarzania danych, nie posiadają żadnych struktur danych jak kontenery (np. BrDataTable), mogą posiadać wewnętrzne parametry używane w algorytmie, w zależności od roli parametrów mogą one być definiowane w module, z linii komend lub pobierane z DB podczas inicjalizacji modułu. abc BrModule klasa bazowa dla każdego modułu, BrModuleContainer kasa, która zapewnia odpowiednią kolejność wywoływania funkcji modułów. Definicja (setup) obiektu tej klasy definiuje proces (job) będący fragmentem analizy/rekonstrukcji danych. 3

BrModule- stanowi schemat dla każdego pochodnego modułu 4

BrModule- jako podstawowa definicja interfejsu Funkcje publiczne stanowiące rodzaj interfejsu do każdego modułu to: Init(), Begin(), Event(...), End(), Finish(). Są one wirtualne co pozwala na ich przeładowanie w klasach pochodnych. Funkcji tych nie zmieniamy lecz tworzymy funkcje przeładowane we własnych klasach pochodnych, czyli modułach naszego autorstwa. wszystkie moduły posiadają wspólny interface, możemy moduły możemy zagnieżdżać w kontenerach tworząc tzw. kompozyty. 5

BrMojModule- omówienie podstawowych funkcji Każdy pochodny moduł musi dziedziczyć z BrModule Pozostawiamy funkcje publiczne na wzów klasy bazowej:init(), Begin(), Event(...), End(), Finish(). Dodatkowo umieszczamy funkcje Book(). Jeżeli, któraś z tych funkcji nie jest używana może pozostać niezdefiniowana. Inne dopuszczalne publiczne funkcje to Set-ersy i ewentualnie Get-ersy. Jeżeli którąś z powyższych funkcji chcemy rozdzielić na więcej funkcji to powinny to być funkcje wirtualne i protegowane (zadeklarowane w bloku protected). To zabezpiecza je przed użyciem przez przypadkowego użytkownika i umożliwia ich przeładowanie w klasach pochodnych. Po utworzeniu modułu w programie zewnętrznym (operatorem new wołając konstruktor) dokonujemy wstępnej inicjalizacji modułu przy użyciu Set-ersów. 6

BrMojModule- funkcje interfejsu Init(): dopełnia inicjalizacji modułu, wołana jest po zdefiniowaniu wszystkich parametrów użytkownika, tylko raz podczas wykonywania programu (once per job). W tej funkcji powinniśmy zdefiniować wszystkie parametry zewnętrzne (z DB), które nie zmieniają się podczas wykonywania programu. Book(): zdefiniowanie histogramów diagnostycznych. Wyciągnięcie tej funkcji poza Init() jest wyborem stylu (w zasadzie można by wołać tą funkcję z Init()). Begin(): wołana przed rozpoczęciem analizy danego runu (jednostki pomiaru). Pozwala na inicjalizację modułu specyficzną dla danego runu, np. parametry kalibracyjne mogą się zmieniać od runu do runu i należy je uaktualnić podczas tego wywołania. 7

BrMojModule- funkcje interfejsu (c.d.) Event(BrEventNode* innode, BrEventNode* outnode): funkcja wołana w pętli po (analizowanych) zdarzeniach. Moduł może używać obu nodów. Ogólna reguła jest taka, że pierwszy argument jest kontenerem danych wejściowych, drugi node może być pusty. Jeżeli moduł utworzy nową tablicę danych to jest ona dodawana do nodu (kontenera) wyjściowego. Nody władają obiektami składowy dlatego po zakończeniu obróbki zdarzenia usunięcie nodu powoduje usunięcie wszystkich danych. End(): wołana po zakończeniu analizy runu. Porządkuje czyści informacje związane z danym runem, np. zapisuje na dysk histogramy odnoszące się do danego runu. Może zdarzyć się konieczność posprzątania przed następnym Begin(). Finish(): wołana na zakończenia całego programy (once per job). Końcowe operacje na obiektach (np. normalizacja histogramów) przed ich zapisem na dysk. Zapis wszystkich wymaganych danych na dysk, itd., 8

Schemat blokowy analizy dla pojedynczego modułu konstruktor + set-ersy tworzenie (book-owanie) histogramów globalnych wczytanie globalnych parametrów z bazy danych itd. operacje konieczne po zakończeniu analizy run-u dla danego runu: tworzenie (book-owanie) histogramów, wczytanie parametrów z db, itd. obróbka danych zdarzenie po zdarzeniu tworzenie nowych struktur i zapisanie ich w tablicy wyjściowej (outnode) operacje końcowe 9

BRAT: kontener modułów brat/modules/abs klasa umożliwiająca łatwe manipulowanie modułami, chodzi głównie o wywołanie ich w odpowiedniej kolejności Definicja (setup) obiektu tej klasy (BrModuleContainer) definiuje proces (job) będący fragmentem analizy/rekonstrukcji danych. 10

BrModuleContainer- uporządkowana kolekcja (łańcuch/sekwencja) modułów 11

BrModuleContainer- przykładowe funkcje 12

BrModuleContainer- schemat kolejnego wywołania modułów (ordered execution) dane podstawowe: hity, dane kalibracyjne parametry użytkownika dane kalibracyjne zrekonstruowane dane fizyczne, tory+pid=cząstki, globalna informacja o zdarzeniu: parametr zderzenia, pozycja wierzchołka 13

BrModuleContainer funkcje określające łańcuch wywołań (Init()) 14

BrModuleContainer funkcje określające łańcuch wywołań (Event()) 15

BrModuleContainer funkcje kontrolne 16

BrMainModule singleton, podstawowy moduł jednokrotnej analizy 17

BrMainModule fginstance i konstruktor 18

BrMainModule definicja interfejsu 19

BrMainModule funkcja Main() 20

BrMainModule funkcja Main(), cd. 21

BrMainModule wywołanie funkcji łańcucha modułów (Init(), Begin(),Event() End(), Finish() ) 22

BrMainModule wywołanie funkcji łańcucha modułów: funkcja Event 23

bratmain >bratmain mainconfig.c [opcje] program główny, w którym interpreter wykonuje zawartość skryptu mainconfig.c opcje definiujące ustawienie (setup) BrMainModule skrypt w którym określony jest setup BrMainModule 24

bratmain: 25

bratmain: 26

przyklad skryptu: oficjalny skrypt do lokalnego trakowania i inne 27