PODSTAWOWE ZASADY PROGRAMOWANIA OBIEKTOWEGO NA BAZIE PAKIETU ROOT Grzegorz Stefanek Jan Kochanowski University 1
Programowanie proceduralne 2
Programowanie proceduralne Programowanie proceduralne, choć powszechnie używane i szeroko rozpowszechnione ma pewne wady: jest nieczytelne dla złożonych projektów jest trudne w zarządzaniu jest dalekie od świata realnego inaczej mówiąc jest mało wygodne zarówno z punku widzenia użytkownika jak i programisty 3
Programowanie obiektowe Modularność i informacja ukryta w modułach/obiektach 4
Obiekty histogram Abstrakcyjny model obiektu histogram : variables = dane methods = operacje (interfejs) 5
Obiekty histogram Abstrakcyjny model obiektu histogram #bins 6
Klasy Typ danych histogram Nazwa klasy = new Typ Danych Metody Publiczne Kreator Obiektu Destruktor Obiektu Interfejs/Metody/ Funkcje Zmienne ukryte/ Dane 7
Typy danych i oznaczenia Klasy: T Typy niebędące klasami: _t Dane: f Stałe: k Zmienne globalne: g TH1, TAxis, TBrowser Int_t, Double_t fncell, farray kinitialsize, kred genv, groot Zmienne maszynowo niezależne: Char_t Character 1 byte CHRACTER*1 Short_t Integer 2 bytes INTEGER*2 Int_t Integer 4 bytes INTEGER*4 Float_t Float 4 bytes REAL*4 Double_t Float 8 bytes REAL*8 Bool_t Boolean (0=false, 1=true) LOGICAL 8
Typ danych histogram Klasy 9
Klasy - dziedziczenie Dziedziczenie TH1 ogólna klasa Główna klasa histogram : opisuje ogólne zachowanie klasa rodzic Klasy dzieci Grzegorz Stefanek ROOT An Object-Oriented Data Analysis Framework 10
Klasy - dziedziczenie Dla programisty: pozwala na ponowne użycie tego samego kodu programu lepszy wgląd w kod programu Dla użytkownika: pozwala na łatwy przegląd oprogramowania dostarcza ogólnego standardu użycia różnych obiektów komfort użycia 11
Klasy - dziedziczenie Publiczne oraz ukryte funkcje i dane klasy TH1 stają się funkcjami i danymi klasy TH1F 12
Klasy - dziedziczenie Przykładowe drzewo hierarchii w ROOT 13
Obiekt Obiekt jest elementem danej klasy (danego typu) 14
Tworzenie obiektu 1) Metoda statyczna tworzy statyczny obiekt myhisto typu TH1F Statyczny: nie może być usunięty w locie, jedynie przez program 15
Tworzenie obiektu 2) Metoda dynamiczna Linia1: deklaruje myhistoptr jako wskaźnik (=adres pamięci) typu TH1F Linia2: deklaruje obiekt i zwraca jego adres w pamięci Dynamiczna: obiekt może być wykreowany i usunięty w locie, przez użytkownika delete myhistoptr 16
Pamięć + Wskaźniki Tworzy wskaźnik (null) do typu TH1F 17
Pamięć + Wskaźniki Przydziela pamięć dla obiektu typu TH1F i zwraca adres 18
Pamięć + Wskaźniki Pamięć zostaje zwolniona i wskaźnik myhistoptr staje się równy NULL 19
Deklaracja w jednej linii: Pamięć + Wskaźniki lub w dwóch liniach: & = operator adresu * = operator dostępu pośredniego 20
Argumenty tworzonych obiektów Konstruktor jest często zapisywany w kilku wersjach, można wybrać najbardziej odpowiednia wersję przeciążanie konstruktora 21
Operacje na obiektach wypełnianie histogramów Również funkcje mogą być przeciążane 1) Obiekt statyczny 22
Operacje na obiektach wypełnianie histogramów Również funkcje mogą być przeciążane 1) Obiekt wskazywany przez wskaźnik: 23
Wskaźnik do wskaźnika - przykład 24
Przykład 25