Paradygmaty programowania

Wielkość: px
Rozpocząć pokaz od strony:

Download "Paradygmaty programowania"

Transkrypt

1 Paradygmaty programowania Typy, typy abstrakcyjne Cezary Bolek Katedra Informatyki UŁ Czym jest typ? Typ to pewien ustalony zbiór wartości (w domyśle: które mogą być przyjmowane przez zmienne) W praktyce z kaŝdym typem związany jest zbiór operacji, które moŝna wykonywać na wartościach z tego typu Dozwolone operacje to wszystkie operatory (w szerokim rozumieniu, czyli równieŝ podprogramy, podstawienia itp.), których dziedziną jest ów typ lub typ z nim zgodny (tu zgodność moŝna rozumieć jako zawieranie). Przykładowo, niemal w kaŝdym języku występuje podstawowy typ całkowity (int, integer). Jest to skończony podzbiór zbioru liczb całkowitych, na ogół odpowiadający zakresowi liczb, jakie moŝna przechowywać w jednym słowie danego komputera. Dozwolone operacje to np. dodawanie, odejmowanie, mnoŝenie, dzielenie. Paradygmaty programowania Cezary Bolek 2 Tworzenie nowych typów Typ pierwotny to taki, którego w danym języku nie da się zdefiniować za pomocą innych typów. Większość języków posiada pewien zestaw typów pierwotnych, np. char, int, float. Z typów pierwotnych moŝna tworzyć typy złoŝone, np. rekordy, tablice. MoŜna tworzyć typy wyliczeniowe, czyli listy stałych. Ich waŝną cechą jest to, Ŝe definiując typ jednocześnie określamy liniowy porządek na nim. Jest wreszcie mechanizm tworzenia podtypów i typów pochodnych. PowyŜsze mechanizmy to klasyka języków imperatywnych zapoczątkowana przez Algol. Paradygmaty programowania Cezary Bolek 3 1

2 Po co są typy? Na poziomie maszynowym wszelkie dane zapisane są jako układy bitów, niezaleŝnie od tego, co reprezentują. Typy są sposobem na nadanie znaczenia tym anonimowym układom bitów. Dzięki temu zyskuje się moŝliwość wykrywania wielu powszechnych błędów (przez sprawdzanie zgodności typów). Dodatkową korzyścią moŝe być optymalizacja kodu przez kompilator, który np. zna zakresy liczb i moŝe wybrać bardziej efektywną reprezentację. Typy abstrakcyjne są sposobem na modularyzację programów. Paradygmaty programowania Cezary Bolek 4 Abstrakcyjne typy danych Typ abstrakcyjny to konstrukcja języka programowania, w której definiuje się typ oraz operacje na nim w taki sposób, Ŝe inne byty w programie nie mogą manipulować danymi inaczej niŝ za pomocą zdefiniowanych operacji. Istotą rzeczy jest tu oddzielenie części prywatnej typu (czyli szczegółów reprezentacji danych i implementacji poszczególnych operacji) od części publicznej (tego, co moŝna wykorzystywać w innych miejscach programu). Ta koncepcja stała się podstawą rozwoju programowania obiektowego: instancje abstrakcyjnych typów danych (czyli konkretne wartości z typów, zwane obiektami) moŝna postrzegać jako samodzielne byty, które współdziałają poprzez wykonywanie udostępnianych sobie operacji. Paradygmaty programowania Cezary Bolek 5 Typy abstrakcyjne - przykłady Wbudowane w języki programowania typy pierwotne moŝna uznać za abstrakcyjne: nie ma dostępu do reprezentacji wewnętrznej, więc moŝna posługiwać się jedynie tym, co dostarcza język. Zdefiniowany przez programistę w Pascalu typ rekordowy i kilka procedur na nim działających nie stanowi abstrakcyjnego typu danych. Zadeklarowanie rekordu tego typu, pozwala działać bezpośrednio na tym rekordzie z pominięciem oficjalnych procedur. Sztandarowy przykład to klasa np. z Javy lub C++. Dane schowane w części prywatnej klasy nie są dostępne na zewnątrz, stąd nie da się wykonywać Ŝadnych operacji bezpośrednio. Paradygmaty programowania Cezary Bolek 6 2

3 Pierwotne typy danych Są to na ogół typy odzwierciedlające cechy sprzętu. Podstawowy pierwotny typ całkowity (int, integer) odpowiada zazwyczaj takiemu zakresowi liczb, jaki mieści się w jednym słowie maszyny. Podstawowy typ całkowity miewa warianty róŝniące się rozmiarem (byte, short, long) i dopuszczaniem znaku, tzn. liczb ujemnych (signed/unsigned). Pierwotne typy zmiennopozycyjne (float, double) to obecnie prawie zawsze typy obsługiwane sprzętowo, zgodne ze standardem IEEE 754. Pierwotne typy znakowe (char, character) przez długie lata wykorzystywały kodowanie ASCII; obecnie coraz częściej uŝywany jest Unicode. Paradygmaty programowania Cezary Bolek 7 Pierwotne typy danych Pierwotny typ logiczny (boolean) moŝe być kodowany za pomocą pojedynczych bitów (co jest oszczędne pamięciowo, ale wolniejsze w dostępie) lub całych bajtów. Występują równieŝ pierwotne typy stałopozycyjne (zwykle zwane decimal), czyli liczby z ustaloną w deklaracji liczbą cyfr i liczbą miejsc po przecinku. Typy takie dobrze nadają się do obliczeń finansowych, pozwalając uniknąć niektórych problemów z zaokrągleniami charakterystycznych dla typów zmiennopozycyjnych. Inne zastosowanie to obliczenia na urządzeniach pozbawionych sprzętowej obsługi liczb zmiennopozycyjnych, np. przenośne urządzenia do gier. Paradygmaty programowania Cezary Bolek 8 Aspekty implementacyjne dla róŝnych typów Paradygmaty programowania Cezary Bolek 9 3

4 Typy napisowe Typ napisowy moŝe być typem pierwotnym np. w Javie (klasa String) W wielu językach, np. w C, napisy są szczególnym rodzajem tablic (a więc nie są typem pierwotnym). Są róŝne moŝliwości obsługi napisów o zmiennej długości Napisy statyczne, czyli po zadeklarowaniu nie moŝna zmienić długości napisu, np. obiekty z klasy String w Javie. Napisy dynamiczne o długości ograniczonej statycznie. Deklarujemy napis z górnym ograniczeniem na długość, np. tablica znakowa w C. Napisy w pełni dynamiczne, czyli długość moŝe zmieniać się bez ograniczeń, np. w Perlu. Ada pozwala stosować wszystkie trzy rodzaje napisów. Paradygmaty programowania Cezary Bolek 10 Typy napisowe Sposób implementacji napisów dynamicznych istotnie wpływa na ich zachowanie Reprezentacja taka jak w języku C (kolejne znaki zapisane w tablicy, ze znakiem o kodzie zero na końcu) jest prosta, ale ma powaŝne wady: Ŝeby poznać długość napisu, trzeba przejrzeć go od początku do końca. Inny typowy sposób to pamiętanie osobno bieŝącej długości napisu. Napisy w pełni dynamiczne wymagają alokowania pamięci w miarę potrzeb, co jest kosztowne. Paradygmaty programowania Cezary Bolek 11 Tablice zwykłe Tablica to zestaw elementów takiego samego typu, gdzie dostęp do poszczególnych elementów jest poprzez indeksowanie. Wymaga to dynamicznego wyliczania adresu elementu (chyba Ŝe indeks jest stałą znaną w czasie kompilacji). Paradygmaty programowania Cezary Bolek 12 4

5 Tablice - problemy implementacyjne Kiedy i skąd alokowana jest pamięć dla tablicy? Generalnie tak jak dla zwykłych zmiennych, choć języki obiektowe skłaniają się do alokowania tablic dynamicznie, ze sterty (np. Java). Jakiego typu mogą być indeksy? W najpowszechniejszym przypadku są to podtypy typu (zakresu) całkowitego, ale niektóre języki dopuszczają wszelkie typy porządkowe, czyli dające się odwzorować na zakres liczb całkowitych: typ znakowy, typ logiczny, typy wyliczeniowe. Czy indeksy są sprawdzane w czasie wykonania programu? Ada sprawdza indeksy bardzo pieczołowicie, C wogóle Paradygmaty programowania Cezary Bolek 13 Tablice - problemy implementacyjne Kiedy wiązany jest zakres (typ) indeksów? Jeśli tablica alokowana jest statycznie, to zakres indeksów oczywiście musi teŝ być znany statycznie, np. globalna tablica w C. Zakres indeksów moŝe być wiązany statycznie, mimo Ŝe sama tablica jest alokowana dynamicznie, np. w Pascalu. I zakres, i pamięć mogą być wiązane dynamicznie, czyli wymiar tablicy moŝe być zadany za pomocą wyraŝenia wyliczanego dopiero w chwili alokacji tablicy. PowyŜsze podejścia traktują o tablicach, których rozmiar jest ustalony w chwili alokacji. Istnieją takŝe tablice w pełni dynamiczne, które mogą rosnąć i kurczyć się w okresie swojego Ŝycia - np. w Perlu. Paradygmaty programowania Cezary Bolek 14 Tablice - problemy implementacyjne Czy i jak moŝna inicjować tablice? Czy dopuszczamy tablice wielowymiarowe? Czy dopuszczalne jest operowanie na wycinkach tablic? Wycinek oznacza tu spójny fragment o rozmiarze mniejszym niŝ rozmiar pierwotnej tablicy. Szczególnie interesujące są wycinki tablic wielowymiarowych; moŝna wtedy wycinać np. dwuwymiarowy fragment tablicy trójwymiarowej. Czy dopuszczalne są operacje indukowane z operacji na elementach? W pewnych sytuacjach takie operacje byłyby naturalne, np. dodawanie macierzy. Tego typu operacje oferuje Fortran. Paradygmaty programowania Cezary Bolek 15 5

6 Dostęp do elementów tablicy Tłumacząc instrukcje zawierające odwołania do elementów tablicy, kompilator generuje kod wyliczający adres elementów. Dla tablic jednowymiarowych adres elementu T[i]: (adres pierwszego elementu) + (i indeks pierwszego elementu)*(rozmiar elementu) Tablice wielowymiarowe przechowywane są tak, jakby to były tablice tablic jednowymiarowych, w dwóch moŝliwych wariantach: wierszami lub kolumnami. Przy ułoŝeniu tablicy dwuwymiarowej wierszami daje to adres elementu T[i, j] równy: (adres elementu T[0, 0]) + (i*n + j)*(rozmiar elementu) gdzie n jest liczbą elementów w wierszu. Paradygmaty programowania Cezary Bolek 16 Tablice asocjacyjne Tablica asocjacyjna to nieuporządkowany zestaw elementów identyfikowanych za pomocą kluczy. Istotą rzeczy jest to, Ŝe klucze mogą pochodzić z obszernego zbioru moŝliwych wartości. Nie ma zatem prostego odwzorowania kluczy na adresy elementów tablicy. Tablice asocjacyjne są uŝyteczne tam, gdzie potrzebny jest swobodny (nieuporządkowany) dostęp do elementów. Typowy przykład tablic asocjacyjnych pojawia się w Perlu, np. %wzrost = ( Jacek => 177, Joanna => 166, Jerzy => 199); $wzrost{ Józefina } = 188; delete $wzrost{ Jerzy }; if (exists $wzrost{ Joanna })... Paradygmaty programowania Cezary Bolek 17 Rekordy Rekord to zestaw elementów dowolnych typów. Elementy rekordu zwane są polami. Większość języków stosuje zapis z kropką na oznaczenie dostępu do pól rekordu. Rekordy przechowywane są w pamięci w kolejnych komórkach, choć architektura sprzętu moŝe narzucać wymóg umieszczania niektórych pól pod adresami będącymi wielokrotnością np. czterech. MoŜe to powodować luki pomiędzy polami. Paradygmaty programowania Cezary Bolek 18 6

7 Unie Unia to zestaw elementów dowolnych typów, z których w dowolnym momencie przechowywany jest tylko jeden. Cel - oszczędne wykorzystanie pamięci w sytuacji, gdy elementy nigdy nie są potrzebne jednocześnie. W niektórych językach unie są deklarowane jako fragment rekordu (rekord z wariantami). Podstawowe pytanie implementacyjne to czy chcemy mieć dynamiczne sprawdzanie typu. Jeśli nie, to odpowiedzialność za uŝycie niewłaściwej wartości z unii spada na programistę (C, C++)/ Jeśli typ ma być sprawdzany, to unia musi dodatkowo zawierać znacznik przechowujący informację o typie przechowywanej w danej chwili wartości (Ada i Pascal). Paradygmaty programowania Cezary Bolek 19 Typy wskaźnikowe Typ wskaźnikowy obejmuje wartości, które mogą wskazywać inne wartości w pamięci, oraz dodatkową wartość pustą, która jest inna niŝ jakikolwiek prawdziwy wskaźnik. Wartość pusta bywa oznaczana jako null lub nil. Z technicznego punktu widzenia wskaźniki są po prostu adresami komórek pamięci. RóŜnica między wskaźnikiem a adresem to dodatkowa informacja o typie wskazywanych obiektów, którą posiada kompilator (i wykorzystuje do sprawdzania zgodności typu). Motywacją do uŝywania wskaźników jest moŝliwość dynamicznego zarządzania pamięcią oraz elastyczność, jaką daje adresowanie pośrednie. Paradygmaty programowania Cezary Bolek 20 Operacje na wskaźnikach Potrzebne jest przypisanie i dereferencja wskaźnika, czyli dostęp do elementu wskazywanego przez wskaźnik. Niektóre języki mają niejawną dereferencję, np. Ada czyni tak w oczywistych przypadkach (odwołania postaci p.x). Do zarządzania pamięcią potrzebny jest mechanizm alokacji, np. new, malloc. Adresowanie pośrednie wymaga posiadania operatora pobrania adresu (wskazania) zmiennej (operator & w języku C). Arytmetyka na wskaźnikach, czyli moŝliwość swobodnego przesuwania wskaźnika, daje programiście duŝe moŝliwości, ale jest niebezpieczna: łatwo sięgnąć do nieswojej pamięci (np. w C i C++). Bez moŝliwości przesuwania wskaźnika mechanizm staje się bezpieczniejszy (Java). Paradygmaty programowania Cezary Bolek 21 7

8 Wskaźniki Problemy Wiszący wskaźnik to wskaźnik odnoszący się do zmiennej, która została juŝ zdealokowana. Ten problem znika, gdy w języku nie ma jawnej dealokacji (np. Java). Zgubiona zmienna to zmienna na stercie, do której nie mamy Ŝadnego wskaźnika. Typy referencyjne Pod tym pojęciem kryją się typy wskaźnikowe o ograniczonych moŝliwościach. W C++ typ referencyjny obejmuje stałe wskaźniki z niejawną dereferencją, na których nie są dozwolone operacje arytmetyczne. W Javie referencje odnoszą się do obiektów. MoŜna je kopiować przez przypisanie; arytmetyka nie jest dozwolona. Paradygmaty programowania Cezary Bolek 22 Implementacja niejawnej dealokacji Pierwsza metoda - liczniki odwołań. Dla kaŝdego przydzielonego bloku pamięci utrzymujemy licznik odwołań do tego bloku. Licznik aktualizujemy przy kopiowaniu wskaźników, wyjściu wskaźnika poza zakres widoczności itp. Blok, do którego nie ma odwołań, jest dealokowany. Druga metoda - zbieranie śmieci. Gdy brakuje miejsca na stercie, rozpoczyna się zbieranie śmieci. Przeglądamy stertę i wszystkie wskaźniki, zaznaczając te bloki, do których nie ma odwołań. Bloki te są następnie dealokowane. Dopuszczenie arytmetyki wskaźnikowej uniemoŝliwia stosowanie powyŝszych metod, gdyŝ nie da się wówczas stwierdzić, do których bloków są odwołania Paradygmaty programowania Cezary Bolek 23 Abstrakcyjne typy danych Abstrakcja to reprezentacja pewnego bytu, w której pominięto nieistotne w danym kontekście szczegóły. Pozwala to grupować byty według ich wspólnych cech i - zaleŝnie od potrzeby - albo zajmować się całymi grupami (czyli owymi wspólnymi cechami), albo bytami wewnątrz grupy (czyli szczegółami róŝniącymi byty w grupie). Chodzi oczywiście o to, by poradzić sobie ze złoŝonością problemów. Dwie podstawowe abstrakcje w językach programowania to: Abstrakcja procesu: Abstrakcjami procesów są podprogramy. Pozwalają wskazać (przez ich wywołanie), Ŝe pewna czynność ma być wykonana, bez wskazywania jak ma być wykonana. Szczegóły znajdują się w treści podprogramu, której wywołujący nie musi znać. Abstrakcja danych: Zamknięta całość obejmująca reprezentację pewnego typu danych wraz z podprogramami, umoŝliwiającymi działanie na tych danych. Paradygmaty programowania Cezary Bolek 24 8

9 Abstrakcyjny typ danych Jest to konstrukcja języka programowania, w której definiowany jest typ oraz operacje na nim w taki sposób, Ŝe inne byty w programie nie mogą manipulować danymi inaczej niŝ za pomocą zdefiniowanych przez nas operacji. Istotą rzeczy jest tu oddzielenie części prywatnej typu (czyli szczegółów reprezentacji danych i implementacji poszczególnych operacji) od części publicznej (tego, co moŝna wykorzystywać w innych miejscach programu). Rozdzielenie składników abstrakcyjnego typu danych na część prywatną i publiczną jest moŝliwe za pomocą zawartych w języku programowania mechanizmów sterowania dostępem. Dane w typie abstrakcyjnym zwane są właściwościami lub danymi składowymi; uŝywa się teŝ określeń pole lub po prostu zmienna Operacje zwane są metodami lub funkcjami składowymi. Paradygmaty programowania Cezary Bolek 25 Abstrakcyjny typ danych Obiekt to instancja abstrakcyjnego typu danych, czyli pojedynczy egzemplarz tego typu zaalokowany na stercie (najczęściej), na stosie lub statycznie (najrzadziej). Sam abstrakcyjny typ danych w większości języków zwany jest klasą. Paradygmaty programowania Cezary Bolek 26 Implementacja abstrakcyjnych typów danych Co powinno być w języku? Jednostka syntaktyczna mieszcząca definicję typu Sposób wyszczególnienia danych i podprogramów publicznych. Kilka podstawowych, wbudowanych operacji na obiektach z typu, np. podstawienie, sprawdzenie równości. Pewne operacje są potrzebne niemal w kaŝdym typie, są jednak zaleŝne od szczegółów tego typu. Muszą zatem być implementowane przez programistę. Są to np. konstruktory, destruktory, iteratory. Język moŝe oferować abstrakcyjne typy danych wprost (C++, C#, Java) lub moŝe mieć bardziej ogólne konstrukcje (np. Ada). Paradygmaty programowania Cezary Bolek 27 9

10 Język Ada Ada zawiera konstrukcje enkapsulacyjne (czyli konstrukcje wiąŝące mniejsze jednostki w zamkniętą całość) zwane pakietami. Pakiet składa się z dwóch części: specyfikacji i ciała. Programista moŝe udostępnić element pakietu w całości lub tylko w postaci interfejsu (czyli specyfikacji, jak uŝyć danego elementu). W pierwszym przypadku, element staje się bezpośrednio dostępny za pomocą nazwy. Nie jest wówczas typem abstrakcyjnym. W drugim przypadku, skrócona deklaracja pojawia się w publicznej części specyfikacji, a reprezentacja - części prywatnej. Paradygmaty programowania Cezary Bolek 28 Język Ada - przykład Przykład specyfikacji pakietu do obsługi stosu: package Stos is type typ_stosowy is limited private; maks_rozmiar: constant := 1000; function pusty(st: in typ_stosowy) return Boolean; procedure połóŝ(st: in out typ_stosowy; elem: in Integer); procedure zdejmij(st: in out typ_stosowy); function szczyt(st: in typ_stosowy) return Integer; private type typ_listowy is array (1..maks_rozmiar) of Integer; type typ_stosowy is record list: typ_listowy; wsk_stosu: Integer range 0..maks_rozmiar := 0; end record; end Stos; Paradygmaty programowania Cezary Bolek 29 Język C++ Język oferuje dwie konstrukcje: class i struct, róŝniące się domyślnymi regułami dostępu. Klasy języka C++ są typami. Jednostka programu, która zadeklarowała instancję klasy (obiekt), ma dostęp do publicznych bytów tej klasy, ale tylko poprzez tę instancję. KaŜda instancja klasy ma własny zestaw danych, natomiast funkcje (metody) nie są powielane lecz przechowywane wspólnie dla całej klasy. Obiekty mogą być statyczne oraz dynamiczne, alokowane na stosie (dostęp przez zwykłe zmienne) lub na stercie (dostęp przez wskaźniki). Alokacja i dealokacja na stercie są jawne; słuŝą do tego operacje new i delete. Definicja klasy moŝe zawierać konstruktor, który będzie niejawnie wywoływany przy tworzeniu obiektu z klasy. Definicja klasy moŝe teŝ zawierać destruktor, wołany przy dealokacji obiektu Paradygmaty programowania Cezary Bolek 30 10

11 Język C++ przykład Przykład klasy do obsługi stosu liczb całkowitych: class stos { private: int *baza, maks_rozmiar, wsk_stosu; public: stos() { baza = new int [1000]; maks_rozmiar = 999; wsk_stosu = -1; }; ~stos() {delete []baza;}; void poloz(int elem) {...}; void zdejmij() {...}; int szczyt() {...}; int pusty() {...}; } Paradygmaty programowania Cezary Bolek 31 Język Java W Javie wszystkie typy zdefiniowane przez uŝytkownika są klasami. Wszystkie obiekty są alokowane na stercie. Podprogramy (metody) mogą być definiowane tylko w klasach. Klasy są deklarowane i definiowana w jednej jednostce syntaktycznej. Do sterowania dostępem stosuje się oznaczenia public, private i protected przy poszczególnych definicjach. Pakiety pozwalają na modularyzację programów. W obrębie pakietu elementy klasy bez oznaczenia dostępu są widoczne dla innych klas. Nie ma destruktorów, gdyŝ Java wykonuje niejawne zbieranie śmieci. Paradygmaty programowania Cezary Bolek 32 Język Java - przykład Przykład klasy do obsługi stosu liczb całkowitych: class Stos { private int baza[]; private int maks_rozmiar, wsk_stosu; public Stos() { baza = new int[1000]; maks_rozmiar = 999; wsk_stosu = -1; }; public void poloz(int elem) {...}; public void zdejmij() {...}; public int szczyt() {...}; public boolean pusty() {...}; } Paradygmaty programowania Cezary Bolek 33 11

12 Język C# Wszystkie obiekty typów zdefiniowanych za pomocą class są alokowane na stercie; na stosie są alokowane obiekty typów zdefiniowanych za pomocą struct. C# wykonuje zbieranie śmieci, więc destruktory nie są konieczne. Mogą być jednak definiowane, jeśli programiście zaleŝy na wykonaniu jakichś czynności przed dealokacją obiektu. W C# istnieje pojęcie akcesorów ( pobieraczy i ustawiaczy ) pozwalających na ograniczony dostęp do danych prywatnych. Jest to bezpieczniejsze niŝ dostęp bezpośredni. Pobieracz to funkcja, która jest wykonywana przy odczytywaniu prywatnej zmiennej obiektu, którą programista postanowił udostępnić w taki sposób. Podobnie ustawiacz jest wywoływany przy próbie podstawienia pod zmienną. Paradygmaty programowania Cezary Bolek 34 12

zmienne stanowią abstrakcję komórek pamięci: programista może przechowywać dane w pamięci, nie martwiąc się o techniczne szczegóły (np.

zmienne stanowią abstrakcję komórek pamięci: programista może przechowywać dane w pamięci, nie martwiąc się o techniczne szczegóły (np. ZMIENNE 39 zmienne stanowią abstrakcję komórek pamięci: programista może przechowywać dane w pamięci, nie martwiąc się o techniczne szczegóły (np. przydział pamięci). 40 Nazewnictwo zmiennych Dozwolone

Bardziej szczegółowo

Podstawy programowania. Wykład 6 Wskaźniki. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład 6 Wskaźniki. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład 6 Wskaźniki Krzysztof Banaś Podstawy programowania 1 Adresy zmiennych Język C pozwala na operowanie adresami w pamięci stąd, między innymi, kwalifikowanie C jako języka relatywnie

Bardziej szczegółowo

Podstawy Programowania Obiektowego

Podstawy Programowania Obiektowego Podstawy Programowania Obiektowego Wprowadzenie do programowania obiektowego. Pojęcie struktury i klasy. Spotkanie 03 Dr inż. Dariusz JĘDRZEJCZYK Tematyka wykładu Idea programowania obiektowego Definicja

Bardziej szczegółowo

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

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static), Tworzenie obiektów Dostęp do obiektów jest realizowany przez referencje. Obiekty w języku Java są tworzone poprzez użycie słowa kluczowego new. String lan = new String( Lancuch ); Obszary pamięci w których

Bardziej szczegółowo

Wstęp do programowania obiektowego. WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this

Wstęp do programowania obiektowego. WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this Wstęp do programowania obiektowego WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this 1 Nazwa typu Rozmiar Zakres Uwagi bool 1 bit wartości true albo false stdbool.h TYPY ZNAKOWE

Bardziej szczegółowo

> C++ dynamiczna alokacja/rezerwacja/przydział pamięci. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki

> C++ dynamiczna alokacja/rezerwacja/przydział pamięci. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki > C++ dynamiczna alokacja/rezerwacja/przydział pamięci Dane: Iwona Polak iwona.polak@us.edu.pl Uniwersytet Śląski Instytut Informatyki 1429536600 > Dzisiejsze zajęcia sponsorują słówka: new oraz delete

Bardziej szczegółowo

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

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost; Klasy w C++ są bardzo ważnym narzędziem w rękach programisty. Klasy są fundamentem programowania obiektowego. Z pomocą klas będziesz mógł tworzyć lepszy kod, a co najważniejsze będzie on bardzo dobrze

Bardziej szczegółowo

Definiowanie własnych klas

Definiowanie własnych klas Programowanie obiektowe Definiowanie własnych klas Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski @ pwr.wroc.pl Definiowanie własnych klas Autor:

Bardziej szczegółowo

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

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016 Wstęp - wykład 0 22 lutego 2016 Historia Simula 67 język zaprojektowany do zastosowan symulacyjnych; Smalltalk 80 pierwszy język w pełni obiektowy; Dodawanie obiektowości do języków imperatywnych: Pascal

Bardziej szczegółowo

Ada-95. Dariusz Wawrzyniak

Ada-95. Dariusz Wawrzyniak Część I Wskaźniki Plan Typy wskaźnikowe i obiekty wskazywane 1 Typy wskaźnikowe i obiekty wskazywane 2 3 4 Plan Typy wskaźnikowe i obiekty wskazywane 1 Typy wskaźnikowe i obiekty wskazywane 2 3 4 Wskaźniki

Bardziej szczegółowo

Tablice (jedno i wielowymiarowe), łańcuchy znaków

Tablice (jedno i wielowymiarowe), łańcuchy znaków Tablice (jedno i wielowymiarowe), łańcuchy znaków wer. 8 z drobnymi modyfikacjami! Wojciech Myszka Katedra Mechaniki i Inżynierii Materiałowej 2017-04-07 09:35:32 +0200 Zmienne Przypomnienie/podsumowanie

Bardziej szczegółowo

Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady

Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4 Dr inż. Dariusz JĘDRZEJCZYK Wskaźniki Dynamiczna alokacja pamięci Przykłady 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 2 Wskaźnik to

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 2: Wstęp do języka Java 3/4/2013 S.Deniziak: Programowanie obiektowe - Java 1 Cechy języka Java Wszystko jest obiektem Nie ma zmiennych globalnych Nie ma funkcji globalnych

Bardziej szczegółowo

JAVA W SUPER EXPRESOWEJ PIGUŁCE

JAVA W SUPER EXPRESOWEJ PIGUŁCE JAVA W SUPER EXPRESOWEJ PIGUŁCE Obiekt Obiekty programowe to zbiór własności i zachowań (zmiennych i metod). Podobnie jak w świecie rzeczywistym obiekty posiadają swój stan i zachowanie. Komunikat Wszystkie

Bardziej szczegółowo

Pascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych:

Pascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych: Zmienna i typ Pascal typy danych Zmienna to obiekt, który może przybierać różne wartości. Typ zmiennej to zakres wartości, które może przybierać zmienna. Deklarujemy je w nagłówku poprzedzając słowem kluczowym

Bardziej szczegółowo

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

Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1 Tablice wielowymiarowe C umożliwia definiowanie tablic wielowymiarowych najczęściej stosowane

Bardziej szczegółowo

Lab 9 Podstawy Programowania

Lab 9 Podstawy Programowania Lab 9 Podstawy Programowania (Kaja.Gutowska@cs.put.poznan.pl) Wszystkie kody/fragmenty kodów dostępne w osobnym pliku.txt. Materiały pomocnicze: Wskaźnik to specjalny rodzaj zmiennej, w której zapisany

Bardziej szczegółowo

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

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie? 1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie? a) konstruktor b) referencje c) destruktor d) typy 2. Które z poniższych wyrażeń są poprawne dla klasy o nazwie

Bardziej szczegółowo

Podstawy Programowania C++

Podstawy Programowania C++ Wykład 3 - podstawowe konstrukcje Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu, instrukcja przypisania, podstawowe typy danych, zapis i odczyt danych, wyrażenia:

Bardziej szczegółowo

Wykład 8: klasy cz. 4

Wykład 8: klasy cz. 4 Programowanie obiektowe Wykład 8: klasy cz. 4 Dynamiczne tworzenie obiektów klas Składniki statyczne klas Konstruktor i destruktory c.d. 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD

Bardziej szczegółowo

Rozdział 4 KLASY, OBIEKTY, METODY

Rozdział 4 KLASY, OBIEKTY, METODY Rozdział 4 KLASY, OBIEKTY, METODY Java jest językiem w pełni zorientowanym obiektowo. Wszystkie elementy opisujące dane, za wyjątkiem zmiennych prostych są obiektami. Sam program też jest obiektem pewnej

Bardziej szczegółowo

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

Programowanie 2. Język C++. Wykład 3. 3.1 Programowanie zorientowane obiektowo... 1 3.2 Unie... 2 3.3 Struktury... 3 3.4 Klasy... 4 3.5 Elementy klasy... 5 3.6 Dostęp do elementów klasy... 7 3.7 Wskaźnik this... 10 3.1 Programowanie zorientowane

Bardziej szczegółowo

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki Informatyka I Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2019 1 Plan wykładu

Bardziej szczegółowo

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

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p. Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni Wykład 3 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Abstrakcja funkcyjna Struktury Klasy hermetyzacja

Bardziej szczegółowo

Typy danych, zmienne i tablice. Tomasz Borzyszkowski

Typy danych, zmienne i tablice. Tomasz Borzyszkowski Typy danych, zmienne i tablice Tomasz Borzyszkowski Silne typy Javy Java jest językiem wyposażonym w silny system typów. Wywodzi się stąd siła i bezpieczeństwo tego języka. Co to znaczy silny system typów?

Bardziej szczegółowo

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Java - tablice, konstruktory, dziedziczenie i hermetyzacja Java - tablice, konstruktory, dziedziczenie i hermetyzacja Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU zmienne tablicowe konstruktory klas dziedziczenie hermetyzacja

Bardziej szczegółowo

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h] 1. Typy. Java jest językiem programowania z silnym systemem kontroli typów. To oznacza, że każda zmienna, atrybut czy parametr ma zadeklarowany typ. Kompilator wylicza typy wszystkich wyrażeń w programie

Bardziej szczegółowo

Język programowania DELPHI / Andrzej Marciniak. Poznań, Spis treści

Język programowania DELPHI / Andrzej Marciniak. Poznań, Spis treści Język programowania DELPHI / Andrzej Marciniak. Poznań, 2012 Spis treści Przedmowa 11 Przyjęta notacja 13 Rozdział 1. Wprowadzenie 15 1.1. Ogólne zasady programowania zorientowanego obiektowo 15 1.2. Historia

Bardziej szczegółowo

Programowanie obiektowe - 1.

Programowanie obiektowe - 1. Programowanie obiektowe - 1 Mariusz.Masewicz@cs.put.poznan.pl Programowanie obiektowe Programowanie obiektowe (ang. object-oriented programming) to metodologia tworzenia programów komputerowych, która

Bardziej szczegółowo

Technologie i usługi internetowe cz. 2

Technologie i usługi internetowe cz. 2 Technologie i usługi internetowe cz. 2 Katedra Analizy Nieliniowej, WMiI UŁ Łódź, 15 luty 2014 r. 1 Programowanie obiektowe Programowanie obiektowe (z ang. object-oriented programming), to paradygmat programowania,

Bardziej szczegółowo

Podstawy programowania skrót z wykładów:

Podstawy programowania skrót z wykładów: Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace

Bardziej szczegółowo

Podstawy programowania. Wykład: 12. Struktury, unie, pola bitowe. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Podstawy programowania. Wykład: 12. Struktury, unie, pola bitowe. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD Podstawy programowania Wykład: 12 Struktury, unie, pola bitowe 1 dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD Podstawy programowania Struktury 2 Struktury Struktury to złożone typy danych

Bardziej szczegółowo

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

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018 Informatyka I Klasy i obiekty. Podstawy programowania obiektowego dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Plan wykładu Pojęcie klasy Deklaracja klasy Pola i metody klasy

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

Bardziej szczegółowo

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

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec PROE wykład 2 operacje na wskaźnikach dr inż. Jacek Naruniec Zmienne automatyczne i dynamiczne Zmienne automatyczne: dotyczą kontekstu, po jego opuszczeniu są usuwane, łatwiejsze w zarządzaniu od zmiennych

Bardziej szczegółowo

PARADYGMATY PROGRAMOWANIA Wykład 4

PARADYGMATY PROGRAMOWANIA Wykład 4 PARADYGMATY PROGRAMOWANIA Wykład 4 Metody wirtualne i polimorfizm Metoda wirualna - metoda używana w identyczny sposób w całej hierarchii klas. Wybór funkcji, którą należy wykonać po wywołaniu metody wirtualnej

Bardziej szczegółowo

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

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Programowanie obiektowe Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Java P. L. Lemay, Naughton R. Cadenhead Java Podręcznik 2 dla kaŝdego Języka Programowania Java Linki Krzysztof Boone oprogramowania

Bardziej szczegółowo

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

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij. Programowanie Sobera Jolanta 16.09.2006 Strona 1 z 26 1 Wprowadzenie do programowania 4 2 Pierwsza aplikacja 5 3 Typy danych 6 4 Operatory 9 Strona 2 z 26 5 Instrukcje sterujące 12 6 Podprogramy 15 7 Tablice

Bardziej szczegółowo

Java Podstawy. Michał Bereta

Java Podstawy. Michał Bereta Prezentacja współfinansowana przez Unię Europejską ze środków Europejskiego Funduszu Społecznego w ramach projektu Wzmocnienie znaczenia Politechniki Krakowskiej w kształceniu przedmiotów ścisłych i propagowaniu

Bardziej szczegółowo

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja

Bardziej szczegółowo

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak Java język programowania obiektowego Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak 1 Język Java Język Java powstał w roku 1995 w firmie SUN Microsystems Java jest językiem: wysokiego

Bardziej szczegółowo

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

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki zaprojektowany jako rozszerzenie języka C o obiektowe mechanizmy abstrakcji danych jest to język pozwalający na programowanie zarówno proceduralne

Bardziej szczegółowo

Klasy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 13

Klasy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java   1 / 13 Klasy Klasa to grupa obiektów, które mają wspólne właściwości, a obiekt jest instancją klasy. Klasa w języku Java może zawierać: pola - reprezentują stan obiektu (odniesienie do pola z kropką), methods

Bardziej szczegółowo

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016 Wykład 1 3 marca 2016 Słowa kluczowe języka Java abstract, break, case, catch, class, const, continue, default, do, else, enum, extends, final, finally, for, goto, if, implements, import, instanceof, interface,

Bardziej szczegółowo

Wstęp do programowania obiektowego. Wykład 2

Wstęp do programowania obiektowego. Wykład 2 Wstęp do programowania obiektowego Wykład 2 1 CECHY I KONCEPCJA PROGRAMOWANIA OBIEKTOWEGO 2 Cechy programowania obiektowego Dla wielu problemów podejście obiektowe jest zgodne z rzeczywistością (łatwe

Bardziej szczegółowo

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

C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów Operatory są elementami języka C++. Istnieje zasada, że z elementami języka, takimi jak np. słowa kluczowe, nie można dokonywać żadnych zmian, przeciążeń, itp. PRZECIĄŻANIE OPERATORÓW Ale dla operatorów

Bardziej szczegółowo

Wykład 4: Klasy i Metody

Wykład 4: Klasy i Metody Wykład 4: Klasy i Metody Klasa Podstawa języka. Każde pojęcie które chcemy opisać w języku musi być zawarte w definicji klasy. Klasa definiuje nowy typ danych, których wartościami są obiekty: klasa to

Bardziej szczegółowo

Java Język programowania

Java Język programowania Java Język programowania Język Java Bazuje i jest zbliżony do C/C++ Porosty zbiór typów danych (podział na typy prymitywne i obiektowe) Zarządzanie pamięcią i Garbage Collection Zintegrowana synchronizacja

Bardziej szczegółowo

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++ Programowanie Wstęp p do programowania Klasa 3 Lekcja 9 PASCAL & C++ Język programowania Do przedstawiania algorytmów w postaci programów służą języki programowania. Tylko algorytm zapisany w postaci programu

Bardziej szczegółowo

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

Różne właściwości. Różne właściwości. Różne właściwości. C++ - klasy. C++ - klasy C++ - KLASY Różne właściwości Funkcje tak samo jak zmienne mają swoje miejsce w pamięci, gdzie są zapisane. Można więc uzyskać ich adres. Podobnie jak adres tablicy jest zwracany przez jej nazwę, podaną bez nawiasu

Bardziej szczegółowo

Podstawy programowania. Wykład PASCAL. Zmienne wskaźnikowe i dynamiczne. dr Artur Bartoszewski - Podstawy prograowania, sem.

Podstawy programowania. Wykład PASCAL. Zmienne wskaźnikowe i dynamiczne. dr Artur Bartoszewski - Podstawy prograowania, sem. Podstawy programowania Wykład PASCAL Zmienne wskaźnikowe i dynamiczne 1 dr Artur Bartoszewski - Podstawy prograowania, sem. 1- WYKŁAD Rodzaje zmiennych Zmienne dzielą się na statyczne i dynamiczne. Zmienna

Bardziej szczegółowo

Algorytmy i struktury danych. wykład 1

Algorytmy i struktury danych. wykład 1 Plan całego wykładu:. Pojęcie algorytmu, projektowanie wstępujące i zstępujące, rekurencja. Klasy algorytmów. Poprawność algorytmu, złożoność obliczeniowa. Wskaźniki, dynamiczne struktury danych: listy,

Bardziej szczegółowo

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU Inicjalizacja agregatowa zmiennej tablicowej int a[5] = 1,2,3,4,5 INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU Struktury są również agregatami, dlatego: struct X double f; char c; X x1 = 1, 2.2, 'c' Ale

Bardziej szczegółowo

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

Klasa jest nowym typem danych zdefiniowanym przez użytkownika. Najprostsza klasa jest po prostu strukturą, np Klasy Klasa jest nowym typem danych zdefiniowanym przez użytkownika Wartości takiego typu nazywamy obiektami Najprostsza klasa jest po prostu strukturą, np struct Zespolona { Klasy jako struktury z operacjami

Bardziej szczegółowo

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

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu. Zrozumienie funkcji danych statycznych jest podstawą programowania obiektowego. W niniejszym artykule opiszę zasadę tworzenia klas statycznych w C#. Oprócz tego dowiesz się czym są statyczne pola i metody

Bardziej szczegółowo

MATERIAŁY DO ZAJĘĆ II

MATERIAŁY DO ZAJĘĆ II MATERIAŁY DO ZAJĘĆ II Zmienne w C# Spis treści I. Definicja zmiennej II. Hierarchia typów (CTS) III. Typy wbudowane IV. Deklaracja zmiennych V. Literały VI. Pobieranie i wypisywanie wartości zmiennych

Bardziej szczegółowo

Wstęp do programowania 2

Wstęp do programowania 2 Wstęp do programowania 2 wykład 6 typy dostępu c.d Agata Półrola Wydział Matematyki UŁ 2005/2006 http://www.math.uni.lodz.pl/~polrola Przykład wykorzystania typów dostępu zob. pakiet rodzajowy listapak

Bardziej szczegółowo

Algorytmy i struktury danych

Algorytmy i struktury danych Algorytmy i struktury danych Zmienne Proste typy danych Strukturalne typy danych Witold Marańda maranda@dmcs.p.lodz.pl 1 Zmienne Liczby (i struktury danych) występują w algorytmach i programach komputerowych

Bardziej szczegółowo

DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0

DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0 Uwaga: DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0 1. Zostały pominięte diagramy: CYFRA, CYFRA SZESNASTKOWA, ZNAK i LITERA. Nie została uwzględniona możliwość posługiwania się komentarzami. 2. Brakuje

Bardziej szczegółowo

Programowanie w języku C++ Podstawowe paradygmaty programowania

Programowanie w języku C++ Podstawowe paradygmaty programowania Programowanie w języku C++ Podstawowe paradygmaty programowania Mirosław Głowacki 1 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki Stosowanej Katedra

Bardziej szczegółowo

Podstawy programowania. Podstawy C# Tablice

Podstawy programowania. Podstawy C# Tablice Podstawy programowania Podstawy C# Tablice Tablica to indeksowany zbiór elementów Tablica jest typem referencyjnym (deklaracja tworzy tylko referencję, sama tablica musi być utworzona oddzielnie, najprościej

Bardziej szczegółowo

Wskaźniki. Informatyka

Wskaźniki. Informatyka Materiały Wskaźniki Informatyka Wskaźnik z punktu widzenia programisty jest grupą komórek pamięci (rozmiar wskaźnika zależy od architektury procesora, najczęściej są to dwa lub cztery bajty ), które mogą

Bardziej szczegółowo

Podstawowe części projektu w Javie

Podstawowe części projektu w Javie Podstawowe części projektu w Javie Pakiet w Javie to grupa podobnych typów klas, interfejsów i podpakietów. Pakiet w Javie może być wbudowany lub zdefiniowany przez użytkownika. Istnieje wiele wbudowanych

Bardziej szczegółowo

Szablony funkcji i szablony klas

Szablony funkcji i szablony klas Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2011 Bogdan Kreczmer Niniejszy dokument

Bardziej szczegółowo

Technologie obiektowe

Technologie obiektowe WYKŁAD dr inż. Paweł Jarosz Instytut Informatyki Politechnika Krakowska mail: pjarosz@pk.edu.pl LABORATORIUM dr inż. Paweł Jarosz (3 grupy) mgr inż. Piotr Szuster (3 grupy) warunki zaliczenia Obecność

Bardziej szczegółowo

TEMAT : KLASY DZIEDZICZENIE

TEMAT : KLASY DZIEDZICZENIE TEMAT : KLASY DZIEDZICZENIE Wprowadzenie do dziedziczenia w języku C++ Język C++ możliwa tworzenie nowej klasy (nazywanej klasą pochodną) w oparciu o pewną wcześniej zdefiniowaną klasę (nazywaną klasą

Bardziej szczegółowo

Wykład 1: Wskaźniki i zmienne dynamiczne

Wykład 1: Wskaźniki i zmienne dynamiczne Programowanie obiektowe Wykład 1: Wskaźniki i zmienne dynamiczne 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD Podstawy programowania w C++ Wskaźniki 2 dr Artur Bartoszewski - Programowanie

Bardziej szczegółowo

Laboratorium nr 9. Temat: Wskaźniki, referencje, dynamiczny przydział pamięci, tablice dynamiczne. Zakres laboratorium:

Laboratorium nr 9. Temat: Wskaźniki, referencje, dynamiczny przydział pamięci, tablice dynamiczne. Zakres laboratorium: Laboratorium nr 9 Temat: Wskaźniki, referencje, dynamiczny przydział pamięci, tablice dynamiczne. Zakres laboratorium: wskaźniki referencje zastosowanie wskaźników wobec tablic dynamiczny przydział pamięci,

Bardziej szczegółowo

Wykład 9: Polimorfizm i klasy wirtualne

Wykład 9: Polimorfizm i klasy wirtualne Programowanie obiektowe Wykład 9: i klasy wirtualne 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD Programowanie obiektowe i metody wirtualne 2 W programowaniu obiektowym polimorfizm

Bardziej szczegółowo

Platformy Programistyczne Podstawy języka Java

Platformy Programistyczne Podstawy języka Java Platformy Programistyczne Podstawy języka Java Agata Migalska 6 maja 2014 Plan wykładu 1 Sztuka wysławiania się w języku Java 2 Cały świat jest obiektem 3 Kolekcje 4 Zmienne i metody statyczne 5 Słowo

Bardziej szczegółowo

Podstawy programowania. Wykład 6 Złożone typy danych: struktury, unie. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład 6 Złożone typy danych: struktury, unie. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład 6 Złożone typy danych: struktury, unie Krzysztof Banaś Podstawy programowania 1 są sposobem na przechowywanie w ramach pojedynczej zmiennej zestawu zmiennych różnych typów,

Bardziej szczegółowo

4 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.01 Rok akad. 2011/2012 2 / 24

4 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.01 Rok akad. 2011/2012 2 / 24 Wymagania proceduralnych języków wysokiego poziomu ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH modele programowe procesorów ASK MP.01 c Dr inż. Ignacy Pardyka UNIWERSYTET JANA KOCHANOWSKIEGO w Kielcach Rok akad.

Bardziej szczegółowo

Materiały do zajęć VII

Materiały do zajęć VII Spis treści I. Klasy Materiały do zajęć VII II. III. Konstruktor Właściwości i indeksatory Klasy Programowanie obiektowe wiadomości wstępne Paradygmat programowania obiektowego Abstrakcja Hermetyzacja

Bardziej szczegółowo

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

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Object-oriented programming Najpopularniejszy obecnie styl (paradygmat) programowania Rozwinięcie koncepcji programowania strukturalnego

Bardziej szczegółowo

Podstawy programowania obiektowego

Podstawy programowania obiektowego Podstawy programowania obiektowego Technologie internetowe Wykład 5 Program wykładu Podejście obiektowe kontra strukturalne do tworzenie programu Pojęcie klasy i obiektu Składowe klasy: pola i metody Tworzenie

Bardziej szczegółowo

Dziedziczenie jednobazowe, poliformizm

Dziedziczenie jednobazowe, poliformizm Dziedziczenie jednobazowe, poliformizm 1. Dziedziczenie jednobazowe 2. Polimorfizm część pierwsza 3. Polimorfizm część druga Zofia Kruczkiewicz, ETE8305_6 1 Dziedziczenie jednobazowe, poliformizm 1. Dziedziczenie

Bardziej szczegółowo

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę. Języki C i C++ to bardzo uniwersalne platformy programistyczne o ogromnych możliwościach. Wykorzystywane są do tworzenia systemów operacyjnych i oprogramowania użytkowego. Dzięki niskiemu poziomowi abstrakcji

Bardziej szczegółowo

Deklaracja struktury w C++

Deklaracja struktury w C++ Struktury to złożone typy danych pozwalające przechowywać różne informacje. Za pomocą struktur możliwe jest grupowanie wielu zmiennych o różnych typach w jeden obiekt. Strukturę można nazywać obiektem

Bardziej szczegółowo

Aplikacje w środowisku Java

Aplikacje w środowisku Java Aplikacje w środowisku Java Materiały do zajęć laboratoryjnych Klasy i obiekty - wprowadzenie mgr inż. Kamil Zieliński Katolicki Uniwersytet Lubelski Jana Pawła II 2018/2019 Klasa zbiór pól i metod Obiekt

Bardziej szczegółowo

Podstawy programowania w języku C++

Podstawy programowania w języku C++ Podstawy programowania w języku C++ Część ósma Zmienne wskaźnikowe koncepcja, podstawowe zastosowania Wersja skrócona, tylko C++ Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski

Bardziej szczegółowo

Wskaźniki. nie są konieczne, ale dają językowi siłę i elastyczność są języki w których nie używa się wskaźników typ wskaźnikowy typ pochodny:

Wskaźniki. nie są konieczne, ale dają językowi siłę i elastyczność są języki w których nie używa się wskaźników typ wskaźnikowy typ pochodny: Wskaźniki nie są konieczne, ale dają językowi siłę i elastyczność są języki w których nie używa się wskaźników typ wskaźnikowy typ pochodny: typ nw; /* definicja zmiennej nw typu typ */ typ *w_nw; /* definicja

Bardziej szczegółowo

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

Podstawy programowania 2. Przygotował: mgr inż. Tomasz Michno Instrukcja laboratoryjna 2 Podstawy programowania 2 Temat: Zmienne dynamiczne tablica wskaźników i stos dynamiczny Przygotował: mgr inż. Tomasz Michno 1 Wstęp teoretyczny 1.1 Tablice wskaźników Tablice

Bardziej szczegółowo

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

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej Programowanie obiektowe Interfejsy Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Interfejsy Autor: Paweł Rogaliński Instytut Informatyki,

Bardziej szczegółowo

Dodatkowo klasa powinna mieć destruktor zwalniający pamięć.

Dodatkowo klasa powinna mieć destruktor zwalniający pamięć. Zadanie 1. Utworzyć klasę reprezentującą liczby wymierne. Obiekty klasy powinny przechowywać licznik i mianownik rozłożone na czynniki pierwsze. Klasa powinna mieć zdefiniowane operatory czterech podstawowych

Bardziej szczegółowo

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 2. Poprawna definicja wskażnika b to: a) float *a, **b = &a; b) float

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe IV. Interfejsy i klasy wewnętrzne Małgorzata Prolejko OBI JA16Z03 Plan Właściwości interfejsów. Interfejsy a klasy abstrakcyjne. Klonowanie obiektów. Klasy wewnętrzne. Dostęp do

Bardziej szczegółowo

Podstawy i języki programowania

Podstawy i języki programowania Podstawy i języki programowania Laboratorium 2 - wprowadzenie do zmiennych mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 23 października 2017 1 / 26 mgr inż. Krzysztof Szwarc Podstawy i

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Java P. L. Krzysztof Lemay, Naughton Barteczko R. Cadenhead JAVA, Java Podręcznik 2 wykłady dla kaŝdego Języka i ćwiczenia Programowania

Bardziej szczegółowo

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

Instytut Mechaniki i Inżynierii Obliczeniowej  Wydział Mechaniczny Technologiczny Politechnika Śląska Instytut Mechaniki i Inżynierii Obliczeniowej www.imio.polsl.pl fb.com/imiopolsl @imiopolsl Wydział Mechaniczny Technologiczny Politechnika Śląska Języki programowania z programowaniem obiektowym Laboratorium

Bardziej szczegółowo

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

Laboratorium nr 12. Temat: Struktury, klasy. Zakres laboratorium: Zakres laboratorium: definiowanie struktur terminologia obiektowa definiowanie klas funkcje składowe klas programy złożone z wielu plików zadania laboratoryjne Laboratorium nr 12 Temat: Struktury, klasy.

Bardziej szczegółowo

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Program, to lista poleceń zapisana w jednym języku programowania zgodnie z obowiązującymi w nim zasadami. Celem programu jest przetwarzanie

Bardziej szczegółowo

ZASADY PROGRAMOWANIA KOMPUTERÓW

ZASADY PROGRAMOWANIA KOMPUTERÓW POLITECHNIKA WARSZAWSKA Instytut Automatyki i i Robotyki ZASADY PROGRAMOWANIA KOMPUTERÓW Język Język programowania: C/C++ Środowisko programistyczne: C++Builder 6 Wykład 9.. Wskaźniki i i zmienne dynamiczne.

Bardziej szczegółowo

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy WSKAŹNIKI KLASOWE

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy WSKAŹNIKI KLASOWE WSKAŹNIKI KLASOWE Wskaźniki klasowe Każdy obiekt zajmuje fragment pamięci i wszystkie obiekty tego samego typu zajmują fragmenty pamięci tej samej długości początek miejsca w pamięci zajmowanego przez

Bardziej szczegółowo

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. 1. Rodzaje pamięci używanej w programach Pamięć komputera, dostępna dla programu,

Bardziej szczegółowo

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu Programowanie strukturalne Opis ogólny programu w Turbo Pascalu STRUKTURA PROGRAMU W TURBO PASCALU Program nazwa; } nagłówek programu uses nazwy modułów; } blok deklaracji modułów const } blok deklaracji

Bardziej szczegółowo

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40 Programowanie w C++ Wykład 5 Katarzyna Grzelak 26 marca 2018 9 kwietnia 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40 Pojęcia z poprzedniego wykładu Podział programu na funkcje podział na niezależne

Bardziej szczegółowo

Zaawansowane programowanie w języku C++ Zarządzanie pamięcią w C++

Zaawansowane programowanie w języku C++ Zarządzanie pamięcią w C++ Zaawansowane programowanie w języku C++ Zarządzanie pamięcią w C++ Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka

Bardziej szczegółowo

Wykład 5: Klasy cz. 3

Wykład 5: Klasy cz. 3 Programowanie obiektowe Wykład 5: cz. 3 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD - podstawy Konstruktor i destruktor (część I) 2 Konstruktor i destruktor KONSTRUKTOR Dla przykładu

Bardziej szczegółowo

Programowanie Komputerów

Programowanie Komputerów Programowanie Komputerów Łukasz Kuszner pokój 209, WETI http://www.kaims.pl/ kuszner/ kuszner@eti.pg.gda.pl Wykład 30 godzin, Laboratoria 30 godzin 2012/ Strona 1 z 17 1. Typy i zmienne Jak wiemy, komputer

Bardziej szczegółowo