Podobne dokumenty
Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04

Programowanie obiektowe

Struktury danych: stos, kolejka, lista, drzewo

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

Struktury danych (I): kolejka, stos itp.

Technologie i usługi internetowe cz. 2

Wstęp do programowania

Algorytmy i Struktury Danych. Co dziś? Drzewo decyzyjne. Wykład IV Sortowania cd. Elementarne struktury danych

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

Kiedy potrzebne. Struktura (rekord) Struktura w języku C# Tablice struktur. struktura, kolekcja

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227

Podstawy Programowania Obiektowego

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

Dynamiczne struktury danych

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

Programowanie i projektowanie obiektowe

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

Programowanie obiektowe

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

Programowanie obiektowe

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

Technologie obiektowe

Algorytmy i Struktury Danych.

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

Modelowanie i Programowanie Obiektowe

Oracle PL/SQL. Paweł Rajba.

Programowanie obiektowe

Struktury. Przykład W8_1

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

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

Struktury Danych i Złożoność Obliczeniowa

Java Collections Framework

Podstawowe struktury danych

Wstęp do programowania 2

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA

Definiowanie własnych klas

Programowanie obiektowe

Modelowanie obiektowe

Materiały do zajęć VII

Programowanie obiektowe

Temat: Liniowe uporzdkowane struktury danych: stos, kolejka. Specyfikacja, przykładowe implementacje i zastosowania. Struktura słownika.

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)

GUI - projektowanie interfejsów cz. II

Dynamiczne struktury danych

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

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

Programowanie obiektowe

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

Lista, Stos, Kolejka, Tablica Asocjacyjna

Wykład 4: Klasy i Metody

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

Abstrakcyjne struktury danych - stos, lista, drzewo

Programowanie 2. Język C++. Wykład 3.

Programowanie w języku Java. Kolekcje

Podstawy programowania obiektowego

Język programowania. Andrzej Bobyk

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

Listy, kolejki, stosy

Programowanie obiektowe - 1.

Kolekcje w Javie cz. 1

Język programowania: Lista instrukcji (IL Instruction List)

Tabela wewnętrzna - definicja

Klasy Obiekty Dziedziczenie i zaawansowane cechy Objective-C

E S - uniwersum struktury stosu

Stos LIFO Last In First Out

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Plan. krótkie opisy modułów. 1 Uwagi na temat wydajności CPython a. 2 Podstawowe techniki poprawiające wydajność obliczeniową

Podstawy Języka Java

Materiał uzupełniający do ćwiczen z przedmiotu: Programowanie w C ++ - ćwiczenia na wskaźnikach

Lista 5 Typy dynamiczne kolejka

Programowanie i struktury danych 1 / 44

Ćwiczenie 5. Python 3: Programowanie obiektowe i dziedziczenie

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

WSTĘP DO INFORMATYKI. Struktury liniowe

Podstawy Programowania. Listy i stosy

Programowanie obiektowe

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

Teoretyczne podstawy informatyki

< K (2) = ( Adams, John ), P (2) = adres bloku 2 > < K (1) = ( Aaron, Ed ), P (1) = adres bloku 1 >

Wprowadzenie do systemów informacyjnych

Zaawansowane programowanie obiektowe - wykład 5

Programowanie obiektowe

Wykład 8 - Drzewa i algorytmy ich przetwarzania

wykład Organizacja plików Opracował: dr inż. Janusz DUDCZYK

Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1

Literatura. 1) Pojęcia: złożoność czasowa, rząd funkcji. Aby wyznaczyć pesymistyczną złożoność czasową algorytmu należy:

problem w określonym kontekście siły istotę jego rozwiązania

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Ćwiczenie 3 stos Laboratorium Metod i Języków Programowania

Programowanie obiektowe

Wykład 1. Projektowanie efektywnych algorytmów przetwarzania danych w sieciowych systemach usług, rzeczy i multimediów.

Programowanie obiektowe

Programowanie obiektowe

Zaawansowane programowanie w C++ (PCP)

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227

Programowanie MorphX Ax

UML cz. II. UML cz. II 1/38

Singleton. Cel: Przykład: Zastosowanie: Zapewnienie, że klasa ma tylko jedną instancję i dostarczenie globalnego dostępu do niej.

Dla każdej operacji łącznie tworzenia danych i zapisu ich do pliku przeprowadzić pomiar czasu wykonania polecenia. Wyniki przedstawić w tabelce.

INFORMATYKA. Podstawy programowania w języku C. (Wykład) Copyright (C) 2005 by Sergiusz Sienkowski IME Zielona Góra

Listy powiązane zorientowane obiektowo

Transkrypt:

Metody getter https://www.python-course.eu/python3_object_oriented_programming.php 0_class http://interactivepython.org/runestone/static/pythonds/index.html https://www.cs.auckland.ac.nz/compsci105s1c/lectures/ 1_class Programowanie zorientowane obiektowo w Pythonie Klasa Robot o dwóch metodach: init oraz say_hi - Nazwa klasy : rozpoczęcie definicji klasy : slowo class, tworzy przestrzeń nazw Zmienna self odnosi się do samego obiektu 2_class 3_class Metody specjalne: init : konstrukcja obiektu klasy str : oficjalna reprezentacja tekstowa obiektu repr : reprezentacja robocza obiektu 1

http://users.uj.edu.pl/~ufkapano/algorytmy/lekcja06/intro.html Cechy programowania zorientowanego obiektowo: Programy są zbudowane z (1) definicji obiektów i (2) definicji funkcji. Ponadto większość obliczeń wyrażona jest w postaci operacji na obiektach. Każda definicja obiektu odpowiada obiektowi lub koncepcji w świecie rzeczywistym. Funkcje działające na obiektach odpowiadają sposobowi działania obiektów w świecie rzeczywistym Koncepcje związane z programowaniem zorientowanym obiektowo: dziedziczenie - w Pythonie oparte na wyszukiwaniu atrybutów. polimorfizm - znaczenie metody (operacji) uzależnione jest od typu (klasy) obiektu, na którym się tą operację wykonuje. hermetyzacja (enkapsulacja) - ukrywanie szczegółów implementacyjnych za interfejsem obiektu. Można modyfikować implementację interfejsu bez wpływania na użytkowników tego obiektu. kompozycja - osadzanie innych obiektów w obiekcie pojemnika. wzorce projektowe (ang. design patterns) - często wykorzystywane struktury programowania zorientowanego obiektowo. Abstrakcyjne typy danych: zbiór statyczny a dynamiczny? Zbiór statyczny Zbiór S statyczny jako tablica : każdy element jest dostępny poprzez jego indeks. Zbiór dynamiczny None Zbiór S dynamiczny : elementy o swobodniej strukturze i wewnętrznej pamięci co dalej. Wejście jedynie poprzez pierwszy element Dynamiczny zbiór danych to zestaw danych i operacji umożliwiających sprawne modyfikacje zawartości zbioru: dokładania i kasowania elementu, wydajne przeglądanie zawartości : wyszukiwania elementu 2

Abstrakcyjne typy danych: co to jest i po co to jest? Stos: uporządkowana struktura danych, w których dane są dokładane i pobierane z wierzchołka stosu. Kolejka: uporządkowana struktura danych, w których nowe dane są dokładane na końcu, natomiast z początku pobiera się dane do dalszego przetwarzania. Realizuje bufor LIFO: Last In, First Out Realizuje bufor FIFO: First In, First Out Operacje realizowane w tej strukturze: dokładanie elementu: push(item) zdejmowanie elementu: pop() dostęp do wierzchołka: peek() rozmiar : size() test czy pusty: isempty() Operacje realizowane w tej strukturze: dokładanie elementu: enqueue(item) usuwanie elementu: dequeue() rozmiar : size() test czy pusty: isempty() Stos_koleka_na liscie Abstrakcyjne typy danych: stos, kolejka i Python Operacje: push(item), pop(), peek(), size(), isempty() realizowane na Pythonowych listach. Nasz_stos Operacje : enqueue(item), dequeue(), size(), isempty() realizowane na Pythonowych listach Nasza_kolejka 3

Abstrakcyjne typy danych: lista Lista: Dynamiczny zbiór danych uporządkowanych liniowo (czyli jak w tablicy), przy czym porządek jest określony poprzez wskaźniki. Ale też isempty() i size(), Pytanie: jak się ma lista typ zmiennej w Pythonie a wyżej opisana lista? Stos_koleka_na liscie Abstrakcyjne typy danych: lista Elementy zawierają informację na temat pozycji kolejnego elementu Kluczowa jest wiedza co do położenia pierwszego elementu. Informacja w nim zawarta pozwoli odczytać całą listę. Wszystkie elementy są podobne: niosą wpisane dane () oraz informację, gdzie jest następny element. head NULL 4

Węzeł podstawowy blok budujący listę wiązaną i łańcuch węzłów Wiązanie węzłów w łańcuch Implementacja klasy lista w Pythonie Dlatego w pierwszym kroku definiujemy klasę Node, która będzie reprezentowała pojedynczy element. 0_lista 1_lista Następnie definiujemy klasę: class UnorderedList: def init (self): self.head = None 2_lista Niezbędne metody do obsługi tej klasy: is Empty(), add (item), size(), search(), remove() 5

Implementacja klasy lista w Pythonie size() 0 1 2 3 4 czy getnext()? add(2) def size(self): current = self.head count = 0 while current!= None: count = count + 1 current = current.getnext() return count def add(self,item): newnode = Node(item) newnode.setnext(self.head) self.head = newnode PROJEKT F Zaimplementować klasy odpowiadające kolejce priorytetowa na: liście Pythona, kopcu max opartym o listę Pythona liście z dowiązaniami, Przygotować moduły z wielorakimi testami poprawności działania klas. Przeprowadzić testy wydajności obsługi kolejki, czyli zmierzyć czas tworzenia i czas obsługi każdej z wyżej przygotowanej implementacji. Testy wydajności przeprowadzić dla rozmiarów: 2**i z i=10 16 Wyniki przedstawić graficznie( wykres log-log) i skomentować. 6