Programowanie Obiektowe i C++

Podobne dokumenty
Programowanie Obiektowe i C++

Programowanie Obiektowe i C++

Programowanie obiektowe

Programowanie obiektowe

Programowanie obiektowe

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

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

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

Programowanie obiektowe

Programowanie Obiektowe i C++

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

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Inne podejścia obiektowe. Referat na seminarium magisterskie Zagadnienia Programowania Obiektowego Dymitr Pszenicyn

Wykład 5: Klasy cz. 3

Języki i metody programowania Java. Wykład 2 (część 2)

Programowanie obiektowe

Języki i techniki programowania Ćwiczenia 2

Programowanie obiektowe

Kompilacja javac prog.java powoduje wyprodukowanie kilku plików o rozszerzeniu.class, m.in. Main.class wykonanie: java Main

Laboratorium 1 - Programowanie proceduralne i obiektowe

Wykład 4: Klasy i Metody

Podstawy Programowania Obiektowego

Materiały do zajęć VII

Programowanie obiektowe

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Programowanie obiektowe - 1.

Operator przypisania. Jest czym innym niż konstruktor kopiujący!

Wykład 8: klasy cz. 4

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

Klasy Obiekty Dziedziczenie i zaawansowane cechy Objective-C

Platformy Programistyczne Podstawy języka Java

Programowanie Obiektowe i C++

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

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

PODSTAWOWE ZASADY PROGRAMOWANIA OBIEKTOWEGO NA BAZIE PAKIETU ROOT

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object

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

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

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

Wykład 9: Polimorfizm i klasy wirtualne

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

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

Informatyka I. Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki

Podstawy Programowania 2

Dziedziczenie. Tomasz Borzyszkowski

Kurs rozszerzony języka Python

PHP: bloki kodu, tablice, obiekty i formularze

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

Programowanie i projektowanie obiektowe

Polimorfizm. dr Jarosław Skaruz

Diagramy klas. dr Jarosław Skaruz

dziedziczenie - po nazwie klasy wystąpią słowa: extends nazwa_superklasy

LibreOffice Calc VBA

Java w 21 dni / Rogers Cadenhead. Gliwice, cop Spis treści. O autorze 11. Wprowadzenie 13 TYDZIEŃ I JĘZYK JAVA

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

10. Programowanie obiektowe w PHP5

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

Definiowanie własnych klas

Programowanie obiektowe

Odczyt danych z klawiatury Operatory w Javie

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Wykład 1: Wskaźniki i zmienne dynamiczne

Język C++ Programowanie obiektowe

Metaprogramowanie w Ruby

Szablony klas, zastosowanie szablonów w programach

Zaawansowane programowanie w C++ (PCP)

Test przykładowy 2 PAI WSB Wrocław /06/2018

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

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

Pętle. for, while, do... while, foreach. Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.

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

PARADYGMATY PROGRAMOWANIA Wykład 3

Materiały do laboratorium MS ACCESS BASIC

Java Język programowania

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

MATERIAŁY DO ZAJĘĆ II

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 2 Przegląd podstawowych klas w Javie (elementy programowania obiektowego) Płock, 16 października 2013 r.

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

Paradygmaty programowania

Operacje wykonywane są na operandach (argumentach operatorów). Przy operacji dodawania: argumentami operatora dodawania + są dwa operandy 2 i 5.

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Rozdział 4 KLASY, OBIEKTY, METODY

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

Podstawy i języki programowania

Programowanie obiektowe

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

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

Dziedziczenie. dr Jarosław Skaruz

C++ - polimorfizm. C++ - polimorfizm. C++ - polimorfizm. C++ - polimorfizm. C++ - polimorfizm POLIMORFIZM

Aplikacje w środowisku Java

Podstawy Programowania ELEMENTY PROGRAMU i TYPY DANYCH

Programowanie Obiektowe i C++

Języki Programowania II Wykład 3. Java podstawy. Przypomnienie

C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie C++ - DZIEDZICZENIE.

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Zofia Kruczkiewicz, Programowanie obiektowe - java, wykład 2 1

Przeciążanie operatorów

Dawid Gierszewski Adam Hanasko

Transkrypt:

Programowanie Obiektowe i C++ Smalltalk Marcin Benke 15 stycznia 2007 Marcin Benke (MIMUW) Programowanie Obiektowe i C++ 15 stycznia 2007 1 / 26

Marcin Benke (MIMUW) Programowanie Obiektowe i C++ 15 stycznia 2007 2 / 26

Smalltalk Stworzony w latach 70-tych w firmie Xerox. Język czysto obiektowy: "wszystko jest obiektem". Sterowanie przez wysyłanie komunikatów. Pierwszy język dla którego stworzono IDE; prekursor dzisiejszych języków wizualnych Programy sa tworzone przez dodawanie nowych klas do środowiska. Stan środowiska razem z kodem programu sa zapisywane do pliku obrazu (image file) Marcin Benke (MIMUW) Programowanie Obiektowe i C++ 15 stycznia 2007 3 / 26

Charakterystyczne cechy Smalltalku wszystko jest obiektem (chyba, że jest metoda) także klasy sa obiektami program = biblioteka klas + obiekty zadeklarowanie nowej klasy oznacza dodanie jej do biblioteki klas nie ma rozróżnienia pomiędzy klasami standardowymi a klasami użytkownika, wszystko można modyfikować brak typów zmiennych wartościa zmiennej może być dowolny obiekt. Nie ma żadnej kontroli w czasie kompilacji. Jeśli obiekt nie rozumie komunikatu, jest bład w czasie wykonania programu Marcin Benke (MIMUW) Programowanie Obiektowe i C++ 15 stycznia 2007 4 / 26

Smalltalk Wszystko jest obiektem Przykłady: 3 ala ma kota licznik Klasa - wzorzec dla obiektów Przykłady: Integer String Count Każda klasa jest podklasa klasy Object Marcin Benke (MIMUW) Programowanie Obiektowe i C++ 15 stycznia 2007 5 / 26

Komunikaty i metody Klasa też jest obiektem (np. klasa Count jest jedynym obiektem klasy Count class) Nowy obiekt powstaje przez wysłanie komunikatu new do klasy, lub jest literałem (3, ala ma kota ) IntegerCount new Obiekt odbiera komunikaty i reaguje na nie wykonujac akcje zdefiniowane w odpowiednich metodach. 2 + 3 licznik increment Marcin Benke (MIMUW) Programowanie Obiektowe i C++ 15 stycznia 2007 6 / 26

Deklaracja klasy Nadklasa i nazwa klasy atrybuty: zwykłe klasowe inne metody Wszystkie atrybuty sa prywatne (widoczne tylko dla danej klasy). Wszystkie metody sa publiczne i wirtualne. Marcin Benke (MIMUW) Programowanie Obiektowe i C++ 15 stycznia 2007 7 / 26

Licznik Object subclass: #Count instancevariablenames: value resetvalue classvariablenames: initialize self reset resetvalue ^resetvalue resetvalue: avalue resetvalue := avalue. Marcin Benke (MIMUW) Programowanie Obiektowe i C++ 15 stycznia 2007 8 / 26

value ^value value: avalue value := avalue. decrement "Musi być zaimplementowane w podklasie" increment "Musi być zaimplementowane w podklasie" reset value := resetvalue Marcin Benke (MIMUW) Programowanie Obiektowe i C++ 15 stycznia 2007 9 / 26

Metody Metoda: funkcja opisujaca akcje obiektu metoda zeroargumentowa: nazwa treść treść - zmienne tymczasowe i ciag wyrażeń oddzielonych kropkami metoda jednoargumentowa (operator dwuaargumentowy) znak_specjalny argument treść metoda wieloargumentowa nazwa1: argument1 nazwa2: argument2... treść Marcin Benke (MIMUW) Programowanie Obiektowe i C++ 15 stycznia 2007 10 / 26

Wyrażenia przesłanie komunikatu odbiorca komunikat+argumenty przypisanie zmienna wyrażenie wyrażenie przekazujace wynik z metody ^wyrażenie Marcin Benke (MIMUW) Programowanie Obiektowe i C++ 15 stycznia 2007 11 / 26

Przykłady wyrażeń x wypisz: ekran kolekcja add: x after: y 2 + 3 x := Count new ^x Marcin Benke (MIMUW) Programowanie Obiektowe i C++ 15 stycznia 2007 12 / 26

Komunikaty unarne (zero parametrów) odbiorca nazwa_komunikatu licznik reset 3 negated abcde size 5 factorial binarne (1 parametr) odbiorca znak_specjalny parametr x == 2 1 = 4 2 + 3 abc, de Marcin Benke (MIMUW) Programowanie Obiektowe i C++ 15 stycznia 2007 13 / 26

Komunikaty złożone (keyword, wiele parametrów) odbiorca nazwa1: par1 nazwa2: par2... tab at: 1 put: 3 licznik asbase: 8 kaskada (wysłanie wielu komunikatów do tego samego odbiorcy) tab at: 1 put: ala ; at: 2 put: ma ; at: 3 put: asa Marcin Benke (MIMUW) Programowanie Obiektowe i C++ 15 stycznia 2007 14 / 26

Deklaracja klasy NazwaNadklasy subclass: #NazwaKlasy instancevariablenames: zmienna1 zmienna2... classvariablenames: Zmienna1 Zmienna2... pooldictionaries: Pool1 Pool2... Zmienne egzemplarzowe (indywidualne, obiektowe) Zmienne klasowe atrybuty wspólne dla wszystkich obiektów danej klasy pule (słowniki) pule zmiennych globalnych, wspólne dla obiektów klas, w których sa wymienione zmienne globalne (słownik System) wspólne dla wszystkich obiektów Nie ma innych zmiennych globalnych Marcin Benke (MIMUW) Programowanie Obiektowe i C++ 15 stycznia 2007 15 / 26

Rodzaje metod klasowe wykonywane sa w klasie, moga działać na zmiennych globalnych i na zmiennych klasowych kategorie inicjalizacja zmiennych klasowych tworzenie nowych obiektów egzemplarzowe (obiektowe) wykonywane w obiektach, moga działać na zmiennych egzemplarzowych, klasowych i globalnych kategorie dostęp do atrybutów porównywanie obiektów kopiowanie wyświetlanie inicjalizacja obiektu pomocnicze (prywatne)... Marcin Benke (MIMUW) Programowanie Obiektowe i C++ 15 stycznia 2007 16 / 26

Metody klasowe W C++ i w Javie konstruktory sa magiczne. W Smalltalku sa po prostu metodami klasowymi. Najczęściej jest to metoda new, ale moga być też inne. " Count class methodsfor: instance-creation " new ^super new initialize Marcin Benke (MIMUW) Programowanie Obiektowe i C++ 15 stycznia 2007 17 / 26

Komunikaty do self Podobnie jak this w C++ i Javie, ale... Odbiorca jest obiekt, w którym wykonuje się wysłanie komunikatu Poszukiwanie metody dla komunikatu rozpoczyna się od obiektu, w którym wykonuje się wysłanie komunikatu (niekoniecznie w tej, w której on tekstowo występuje) Jest to wiazanie dynamiczne inaczej niż w C++ i w Javie dokonuje się ono dopiero na etapie wykonania. Marcin Benke (MIMUW) Programowanie Obiektowe i C++ 15 stycznia 2007 18 / 26

Komunikaty do self przykład Object subclass: #Jeden test ^1 result1 ^self test x1 := Jeden new. x2 := Dwa new x1 test 1 x1 result1 1 x2 test 2 x2 result1 2 Jeden subclass: #Dwa test ^2 Marcin Benke (MIMUW) Programowanie Obiektowe i C++ 15 stycznia 2007 19 / 26

Komunikaty do super Podobnie jak Nadklasa::metoda(...) w C++ Odbiorca jest obiekt wyznaczony przez self. Poszukiwanie metody zaczyna się od nadklasy klasy, w której występuje tekstowo dany komunikat. Jest to wiazanie statyczne (można go dokonać na etapie kompilacji). Marcin Benke (MIMUW) Programowanie Obiektowe i C++ 15 stycznia 2007 20 / 26

Komunikaty do super przykład Dwa subclass: #Trzy result2 ^self result1 result3 ^super test Trzy subclass: #Cztery x3 := Trzy new. x4 := Cztery new x3 test 2 x4 result1 4 x3 result2 2 x4 result2 4 x3 result3 2 x4 result3 2 test ^4 Marcin Benke (MIMUW) Programowanie Obiektowe i C++ 15 stycznia 2007 21 / 26

Licznik numeryczny Count subclass: #IntegerCount instancevariablenames: classvariablenames: initialize resetvalue := 0. super initialize decrement value := value - 1 increment value := value + 1 Marcin Benke (MIMUW) Programowanie Obiektowe i C++ 15 stycznia 2007 22 / 26

Licznik ASCII Count subclass: #ASCIICount instancevariablenames: classvariablenames: pooldictionaries: ASCIICount methodsfor: initialize-release initialize resetvalue := $a. super initialize Marcin Benke (MIMUW) Programowanie Obiektowe i C++ 15 stycznia 2007 23 / 26

ASCIICount methodsfor: counting decrement newasciivalue newasciivalue := value asinteger <= 32 iftrue: [126] iffalse: [value asinteger - 1]. ^self value: (Character value: newasciivalue) increment newasciivalue newasciivalue := value asinteger >= 126 iftrue: [32] iffalse: [value asinteger + 1]. ^self value: (Character value: newasciivalue) Marcin Benke (MIMUW) Programowanie Obiektowe i C++ 15 stycznia 2007 24 / 26

Bloki Bloki sa anonimowymi funkcjami [:arg1 :arg2 S1. S2.... Sn ] bloki sa obiektami klasy BlockContext. moga być przypisywane na zmienne, przekazywane jako argumenty i dawane w wyniku w miejscu wystapienia blok nie jest wykonywany; tworzony jest tylko egzemplarz klasy BlockContext. Blok może być wykonany przez wysłanie doń komunilatu value. Daje to w wyniku wartość ostatniego wyrażenia wykonanego w bloku. [i:=2+2] value [:x :y x+y*3] value: 2 value: 5 Blok może mieć zmienne lokalne: [:arg locals stmts] Zmienne nielokalne sa wiazane statycznie. Marcin Benke (MIMUW) Programowanie Obiektowe i C++ 15 stycznia 2007 25 / 26

Instrukcje warunkowe cond iftrue: ablock cond iffalse: ablock cond iftrue: ablock1 iffalse: ablock2 cond iffalse: ablock iftrue: ablock2 cond musi być obiektem klasy True lub False self = 0 iftrue: [^self error: zero has no reciprocal ] iffalse: [^1 / self] Formalnie iftrue: etc. sa zwykłymi komunikatami; zachowuja się, jakby klasa True miała metody iftrue: trueblock iffalse: falseblock ^trueblock value iffalse: ablock ^nil etc... Marcin Benke (MIMUW) Programowanie Obiektowe i C++ 15 stycznia 2007 26 / 26