Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04

Podobne dokumenty
Programowanie obiektowe

Programowanie obiektowe

Programowanie obiektowe

Programowanie obiektowe

Programowanie obiektowe


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

Struktury Danych i Złożoność Obliczeniowa

Lista, Stos, Kolejka, Tablica Asocjacyjna

Programowanie obiektowe

Programowanie obiektowe

Struktury danych: stos, kolejka, lista, drzewo

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

Wykład 3. Złożoność i realizowalność algorytmów Elementarne struktury danych: stosy, kolejki, listy

Podstawy Programowania Obiektowego

Listy powiązane zorientowane obiektowo

GUI - projektowanie interfejsów cz. II

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

Abstrakcyjne struktury danych - stos, lista, drzewo

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

Podstawowe struktury danych

Wykład 8: klasy cz. 4

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

Lista 5 Typy dynamiczne kolejka

Wykład 3 Składnia języka C# (cz. 2)

Programowanie obiektowe

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

Pakiety i interfejsy. Tomasz Borzyszkowski

Szablony funkcji i klas (templates)

Szablony funkcji i szablony klas

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

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

Modelowanie obiektowe

Programowanie obiektowe

Programowanie obiektowe

WSTĘP DO INFORMATYKI. Struktury liniowe

Projektowanie obiektowe Wzorce projektowe. Gang of Four Wzorce rozszerzeń

WSNHiD, Programowanie 2 Lab. 2 Język Java struktura programu, dziedziczenie, abstrakcja, polimorfizm, interfejsy

Wprowadzenie do programowania

Notacja RPN. 28 kwietnia wyliczanie i transformacja wyrażeń. Opis został przygotowany przez: Bogdana Kreczmera.

Programowanie i struktury danych 1 / 44

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

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

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

Aplikacje w środowisku Java

Dynamiczne struktury danych

Alicja Marszałek Różne rodzaje baz danych

Wstęp do programowania

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

Struktury danych (I): kolejka, stos itp.

Kompletna dokumentacja kontenera C++ vector w -

TEMAT : KLASY DZIEDZICZENIE

java.util.* :Kolekcje Tomasz Borzyszkowski

Stos LIFO Last In First Out

Podstawy programowania 2. Przygotował: mgr inż. Tomasz Michno

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

Programowanie obiektowe - 1.

Definiowanie własnych klas

Mechanizm dziedziczenia

Aplikacje w środowisku Java

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

Projektowanie obiektowe. Roman Simiński Wzorce projektowe Wybrane wzorce strukturalne

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

Listy, kolejki, stosy

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Kurs programowania - kolekcje

Algorytmy i Struktury Danych

dr inż. Paweł Myszkowski Wykład nr 11 ( )

Wprowadzenie do szablonów szablony funkcji

Materiały do zajęć VII

Typy wyliczeniowe Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki

Programowanie obiektowe

INFORMATYKA DANE.

Wprowadzenie do szablonów szablony funkcji

Teoretyczne podstawy informatyki

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

Wypożyczalnia VIDEO. Technologie obiektowe

Informatyka I stopień (I stopień / II stopień) ogólno akademicki (ogólno akademicki / praktyczny) niestacjonarne (stacjonarne / niestacjonarne)

Klasy Obiekty Dziedziczenie i zaawansowane cechy Objective-C

Wyjątki (exceptions)

Programowanie w Javie nazwa przedmiotu SYLABUS A. Informacje ogólne

Spis treści. I. Pascal

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

Podstawy Informatyki. Wykład 6. Struktury danych

TABLICA (ang. array) pojedyncza zmienna z wieloma komórkami, w których można zapamiętać wiele wartości tego samego typu danych.

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski

Programowanie i projektowanie obiektowe

Dynamiczne struktury danych

Programowanie obiektowe

Analiza i projekt systemu pracy grupowej z zastosowaniem metodyki SCRUM w technologii SharePoint Karolina Konstantynowicz

Diagramy związków encji. Laboratorium. Akademia Morska w Gdyni

Programowanie Komponentowe Zarządzanie obiektami: kontenery

Przeciążanie operatorów

Struktury. Przykład W8_1

Teoretyczne podstawy informatyki

Metody Kompilacji Wykład 3

Podstawy programowania Pascal/Java/C# : skrypt do wykładu i laboratoriów / Jacek M. Czerniak, Łukasz Apiecionek, Grzegorz Zych.

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

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

Transkrypt:

Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04 Cel zajęć. Celem zajęć jest zapoznanie się ze sposobem działania popularnych kolekcji. Wprowadzenie teoretyczne. Rozważana w ramach niniejszych zajęć tematyka jest ważna, gdyż kolekcje są powszechnie używane do przechowywania danych i efektywnego zarządzania danymi. Aby ze zrozumieniem zrealizować zadania przewidziane do wykonania w ramach zajęć laboratoryjnych, należy znać znaczenie pojęcia kolekcji oraz cechy następujących kolekcji: listy jednokierunkowej, listy dwukierunkowej, kolejki, stosu. 1. Kolekcja Jest to pojęcie stosowane w odniesieniu do klas, które umożliwiają przechowywanie oraz efektywne przetwarzanie obiektów danego typu. Jedną z największych zalet kolekcji jest możliwość dynamicznej zmiany ich rozmiaru liczba przechowywanych przez kolekcje elementów nie jest ograniczona w momencie utworzenia danej kolekcji, tak jak ma to miejsce w przypadku tablicy. 2. Lista Jest kolekcją składającą się z uporządkowanych liniowo elementów. Lista umożliwia wstawianie elementów w miejsce o dowolnym indeksie. Ta sama zasada dotyczy pobierania elementu z listy. Do prawidłowego manipulowania listą wymagane jest przechowywanie przez listę adresu jej pierwszego elementu. Lista jednokierunkowa to lista, w której każdy element wskazuje na element następny. Rys. 1 Lista jednokierunkowa Lista dwukierunkowa to lista, w której każdy element wskazuje na element następny i na element poprzedni. Listy dwukierunkowe umożliwiają łatwiejszy dostęp do danych, niż listy jednokierunkowe. 1

Rys. 2 Lista dwukierunkowa 3. Kolejka Jest kolekcją składającą się z liniowo uporządkowanych elementów. Charakterystyczną cechą kolejki jest to, iż nowe elementy dodawane do kolejki są dodawane na jej końcu, natomiast elementy, które są pobierane z kolejki, są pobierane z jej początku. Oznacza to, że element, który pierwszy został umieszczony w kolejce, pierwszy ją opuści. Kolejki zwane są także kolekcjami FIFO (ang. First In First Out). Rys. 3 - Kolejka 4. Stos Jest kolekcją składającą się z liniowo uporządkowanych elementów. Charakterystyczną cechą stosu jest to, iż użytkownik posiada dostęp jedynie do elementu znajdującego się na wierzchołku stosu, a nowy element stosu można dodawać jedynie na jego wierzchołek. Oznacza to, że element, który został umieszczony na stosie jako ostatni, pierwszy opuści stos. Stosy zwane są również kolekcjami LIFO (ang. Last In First Out). 2

Rys. 4 - Stos Zadanie 1. Proszę zrealizować aplikację obiektową zgodnie z poniższymi założeniami: 1. Należy zaimplementować własną kolekcję będącą generyczną listą. 2. Lista ma posiadać strukturę odpowiadającą diagramowi klas pod zadaniem, podpowiedź znajdziecie Państwo na końcu instrukcji. 3. Utworzyć kod testujący kolejki przechowującej obiekty typu int, który między innymi wypisze listę liczb parzystych. 3

Zadanie 2. Proszę zrealizować aplikację obiektową zgodnie z poniższymi założeniami: 1. Należy zaimplementować własną kolekcję będącą generyczną listą dwukierunkową. 2. Lista ma posiadać strukturę odpowiadającą diagramowi klas pod zadaniem. 3. Zaimplementować w klasie listy interfejs IEnumerable (pomoc na końcu instrukcji). 4. Utworzyć kod dla listy obiektów Person. Wypisać osoby pełnoletnie. 4

Zadanie do domu. 1. Należy zaimplementować własną generyczną kolekcję drzewa. 2. Węzeł drzewa posiada wskaźniki na element pierwszego dziecka, element kolejnego brata, element rodzica. 3. Metoda lub klasa realizująca iterację (IEnumerator) drzewa metodą Pre-order (NLR). 4. Metoda iterująca ścieżkę od węzła do korzenia (osobna podklasa IEnumerator). 5. Na bazie kolekcji drzewa zrealizować hierarchię pracowników firmy (kierownik podwładni). Pozwalającą wypisać wszystkich podwładnych danego kierownika, również nie bezpośrednio mu podlegających. 5

Pomoc do zadania 1. Przykładowy kod realizujący strukturę listy przedstawiono na poniższym listingu: MyList<T> jest klasą generyczną tzn. Obiekt naszej listy może przechowywać dowolny typ obiektu zdefiniowany (nazwa powiązanej klasy pod literką T) w trakcie tworzenia instancji naszej klasy. Nasza klasa posiada wewnętrzną prywatną klasę Node (ukrytą, niedostępną poza klasą), służącą jako kontener dla przechowywanych obiektów typu T. T this [int i] to przeciążenie operatora tablicowego, przez którego możliwe jest odwołanie do listy poprzez indeks np. lista[1] Modyfikator partial class skutkuje, iż możliwe jest zdefiniowanie kolejnych klas o tej samej nazwie, które ostatecznie tworzą jedną połączoną klasę. W tej formie klasa oferuje nam jedynie możliwość dodawania i odwoływania się do elementu po indeksie. 6

Pomoc do zadania 2. Implementując w naszej klasie interfejs IEnumerable nasza klasa zyskuje całkiem nową funkcjonalność. Musimy w tym celu utworzyć kilka dodatkowych metod oraz kolejną podklasę, tak jak na poniższym listingu. 7

Enumerator jest klasą, która pozwala sekwencyjnie przechodzić po węzłach naszej struktury. Implementacja wymieniowych interfejsów pozwala naszą strukturę zintegrować z wieloma natywnymi bibliotekami C# takimi jak m.in. pętla foreach. 8

Od tego momentu naszą listę możemy wykorzystać jak na poniższym przykłądzie. list.where są specyficznymi metodami, które zwracają podlistę elementów. Jako parametr przyjmują wyrażenie lambda określające warunek jaki mają spełniać elementy w podliście. Wyrażenie to wywoływane jest na każdym iterowanym elemencie listy i zwraca wartość bool. list.foreach podobnie do Where, z tą różnicą, iż lambda nie musi nic zwracać i służy wyłącznie do wykonania operacji na każdym iterowanym elemencie listy. Wyrażenie Lambda składa się z: (definicja parametrów funkcji) => {definicja ciała funkcji} *nawiasy są opcjonalne 9