Wstęp do programowania

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

Download "Wstęp do programowania"

Transkrypt

1 Wstęp do programowania Wykład 12 Wstęp do programowania obiektowego Janusz Szwabiński Plan wykładu: Pierwsze kroki Programowanie obiektowe W stronę zastosowań praktycznych klasa Particle Więcej o metodach Metody specjalne Atrybuty klas Składowe prywatne Dziedziczenie Serializacja (marynowanie) instancji klas Pierwsze kroki Załóżmy, że chcemy na komputerze przedstawić punkt (lub zbiór punktów) na płaszczyźnie. W notacji matematycznej punkt taki przedstawia się z reguły przy pomocy nawiasów, wewnątrz których umieszcza się oddzielone przecinkiem współrzędne. y 3 (2,3) ( 3,1) (0,0) x 2 ( 1.5, 2.5) 3 Taki punkt możemy reprezentować w Pythonie na kilka sposobów: możemy przechowywać współrzędne punktu w dwóch różnych współrzędnych możemy przechowywać współrzędne punktu jako elementy listy lub krotki możemy stworzyć własny typ danych

2 Słowo kluczowe class Do definiowania typów użytkownika służy słowo kluczowe class. Dlatego taki typ nazywany jest często klasą: In [1]: class Point: """Reprezentacja punktu na płaszczyźnie""" Definicja klasy przypomina definicję funkcji. Po słowie kluczowym następuje jej nazwa i dwukropek, a następnie wcięte względem nagłówka instrukcje tworzące ciało klasy. Oczywiście klasa w powyższym przykładzie jest bardzo prosta, jej ciało zawiera tylko napis dokumentujący. Wykonanie definicji powoduje stworzenie odpowiadającego jej obiektu w pamięci: In [2]: print(point) <class ' main.point'> In [3]: type(point) Out[3]: type Programiści C++ mogą być trochę zaskoczeni, ponieważ pod tym wzgledem C++ różni się od Pythona w C++ obiekty odpowiadają dopiero zmiennym nowego typu, czyli instancjom klasy. Oczywiście w Pythonie też możemy tworzyć takie instancje: In [4]: blank = Point() Jednak odpowiadają im już inne obiekty: In [5]: print(blank) < main.point object at 0x7f074c6980b8> In [6]: type(blank) Out[6]: main.point Część własności dotyczących modułów jest aktualna w przypadku klas:

3 In [7]: dir(point) Out[7]: [' class ', ' delattr ', ' dict ', ' dir ', ' doc ', ' eq ', ' format ', ' ge ', ' getattribute ', ' gt ', ' hash ', ' init ', ' le ', ' lt ', ' module ', ' ne ', ' new ', ' reduce ', ' reduce_ex ', ' repr ', ' setattr ', ' sizeof ', ' str ', ' subclasshook ', ' weakref '] In [8]: print(point. module ) main In [9]: print(point. doc ) Reprezentacja punktu na płaszczyźnie Wszystko jest obiektem Różne języki programowania wprowadzają różne definicje obiektów. W niektórych obiekt musi mieć atrybuty i metody, w innych o obiektach możemy mówić, jeśli można z nich tworzyć podklasy. W Pythonie mamy do czynienia z mniej restrykcyjną definicją po prostu wszystko jest obiektem. Atrybuty W Pythonie nie jest problemem dodawanie atrybutów do istniejącej już instancji (choć oczywiście są lepsze sposoby na ich definiowanie):

4 In [10]: blank.x = 3.0 blank.y = 4.0 In [11]: print("(",blank.x,",",blank.y,")") ( 3.0, 4.0 ) Zwróćmy uwagę, że z podobnej składni używamy, aby skorzystać np. ze składowych modułu. Instancja może być argumentem funkcji: In [12]: def print_point(p): print("(%g,%g)" % (p.x,p.y)) In [13]: print_point(blank) (3,4) In [14]: blank2 = Point() In [15]: print_point(blank2) AttributeError Traceback (most recent ca ll last) <ipython-input-15-5cae89dad20a> in <module>() ----> 1 print_point(blank2) <ipython-input-12-1e87b98c7298> in print_point(p) 1 def print_point(p): ----> 2 print("(%g,%g)" % (p.x,p.y)) AttributeError: 'Point' object has no attribute 'x' Programowanie obiektowe

5 Programowanie obiektowe (ang. object oriented programming, OOP) to paradygmat programowania, w którym programy definiuje się za pomocą obiektów elementów łączących stan (dane) i zachowanie (procedury, czyli metody). Obiektowy program komputerowy to nic innego jak zbiór takich obiektów, komunikujących się pomiędzy sobą w celu wykonywania zadań. Programowanie obiektowe tym różni sie od tradycyjnego programowania strukturalnego (czyli ogólnie tego, czym zajmowaliśmy się do tej pory), że w tym drugim dane i procedury nie są ze sobą bezpośrednio powiązane. W obiegowej opinii najwiekszym atutem programowania obiektowego jest naturalne odwzorowanie rzeczywistości otaczający nas świat jest złożony z obiektów będących instancjami pewnych bardziej ogólnych klas. Elementy języka obiektowego Poszczególne obiektowe języki oprogramowania różnią się między sobą niektórymi własnościami. Powszechnie uważa się jednak, że następujące elementy czynią te języki obiektowymi: abstrakcja, czyli model, który w rzeczywistości nie reprezentuje żadnego istniejącego obiektu, ale który stanowi podstawę do definiowania obiektów. Najczęściej utożsamiany z klasą. Przykładem może być zwierzę w rzeczywistości występują obiekty potomne (np. pies, kot), których pewne własności są typowe dla klasy zwierzę. hermetyzacja (lub enkapsulacja), czyli ukrywanie implementacji. Celem jest unikanie sytuacji, w których jeden obiekt zmienia stan wewnętrzny innych obiektów w nieoczekiwany sposób. W ramach hermetyzacji każdy obiekt prezentuje innym obiektom swój interfejs, który określa dopuszczalne metody współpracy. W Pythonie hermetyzacja jest w dużym stopniu umowna. polimorfizm, inaczej wielopostaciowość, to metoda pozwalająca funkcji wirtualnej przyjmować różne sposoby jej realizacji. Na przykład, metoda jedźna rowerze jest realizowana inaczej niż metoda jedźw samochodzie, mimo takiej samej nazwy. dziedziczenie umożliwia tworzenie specjalizowanych obiektów na podstawie bardziej ogólnych (np. Particle --> Boson). Odzwierciedla wspólne cechy obiektów. Dla obiektów specjalizowanych nie trzeba definiować na nowo całej funkcjonalności, lecz tylko tę, której nie ma obiekt bazowy (ogólny). Definicja klasy class Nazwa_klasy: <instrukcja1>... <instrukcjan> definicje klas muszą zostać wykonane, zanim zostaną użyte można umieścić definicję klasy w rozgałęzieniu instrukcji iflub wewnątrz funkcji wykonanie definicji powoduje stworzenie nowej przestrzeni nazw używanej jako zasięg lokalny nazw po zakończeniu wykonywania definicji tworzony jest obiekt klasy Definicja klasy raz jeszcze

6 class Nazwa_klasy(object): <instrukcja1>... <instrukcjan> tzw. klasa nowego stylu to każda klasa, która dziedziczy z klasy object od klas starego typu różni się między innymi kolejnością dziedziczenia w przypadku wielu klas bazowych w Pythonie 3.x jedyny typ klasy Własności klas klasy w Pythonie nie stawiają nieprzekraczalnych barier pomiędzy swoją definicją a programistą! mechanizm dziedziczenia pozwala klasie na posiadanie wielu klas bazowych w terminologii C++ wszystkie składowe klasy Pythonowej (włącznie z atrybutami) są publiczne, a wszystkie funkcje składowe są wirtualne większość wbudowanych operatorów może zostać przedefiniowana dla różnych typów klasowych klasy same są obiektami słowo obiekt w Pythonie nie oznacza konkretu (instancji) klasy nie wszystkie typy w Pythonie są klasowe, jednak wszystkie przejawiają w swym zachowaniu to, co najlepiej wyrazić słowem "obiekt" W stronę zastosowań praktycznych klasa Particle In [16]: class Particle: #prawie jak konstruktor (więcej za chwilę) def init (self,mass,velocity): self.m = mass self.v = velocity #przykładowa metoda def momentum(self): return self.m*self.v #o tym więcej później def str (self): msg = "(STR m: %2.1f, v: %2.1f)"%(self.m,self.v) return msg def repr (self): msg = "(REPR m: %2.1f, v: %2.1f)"%(self.m,self.v) return msg

7 In [17]: dir(particle) Out[17]: [' class ', ' delattr ', ' dict ', ' dir ', ' doc ', ' eq ', ' format ', ' ge ', ' getattribute ', ' gt ', ' hash ', ' init ', ' le ', ' lt ', ' module ', ' ne ', ' new ', ' reduce ', ' reduce_ex ', ' repr ', ' setattr ', ' sizeof ', ' str ', ' subclasshook ', ' weakref ', 'momentum'] In [18]: Particle. module Out[18]: ' main ' In [19]: Particle.momentum Out[19]: <function main.particle.momentum>

8 In [20]: a = Particle(1.2,2.4) a1 = Particle() TypeError Traceback (most recent ca ll last) <ipython-input df915> in <module>() 1 a = Particle(1.2,2.4) ----> 2 a1 = Particle() TypeError: init () missing 2 required positional arguments: 'mas s' and 'velocity' In [21]: type(a) Out[21]: main.particle Obiekty konkretu klasy: atrybuty danych i metody In [22]: a.m Out[22]: 1.2 In [23]: a.v Out[23]: 2.4 In [24]: a.momentum() Out[24]: 2.88 In [25]: a.v = 4.8

9 In [26]: a.momentum() Out[26]: 5.76 Reprezentacja obiektu na ekranie In [27]: a Out[27]: (REPR m: 1.2, v: 4.8) In [28]: print(a) (STR m: 1.2, v: 4.8) Więcej o metodach zwykłe funkcje w Pythonie w definicji pierwszy argument jest referencją do aktualnej instancji klasy argument ten może mieć dowolną nazwę, ale niepisanym standardem jest **self** **self** pełni rolę **this** w C++ i Javie przy wywołaniu metody pomijamy ten argument metody mogą używać odniesień do nazw globalnych zasięg globalny związany z metodą jest po prostu tym modułem, który zawiera definicję klasy Nie jest konieczne, aby definicja metody była tekstowo umieszczona w definicji klasy: In [29]: def f1(self,x,y): return min(x,x+y) class C: f = f1 Metody mogą wywoływać inne metody poprzez użycie atrybutów metod obiektu **self**:

10 In [30]: class Worek: def init (self): self.dane=[] def dodaj(self,x): self.dane.append(x) def dodaj_dwa_razy(self,x): self.dodaj(x) self.dodaj(x) In [31]: w = Worek() w.dodaj(2) w.dodaj_dwa_razy("a") In [32]: w.dane Out[32]: [2, 'a', 'a'] Metody specjalne

11 Metody specjalne pozwalają na definiowanie pewnych funkcjonalności klas, które wywoływane są automatrycznie przez interpreter (tak realizowane jest np. przeciążanie niektórych operatorów). Oto wybrane z nich: init (self[,...]) wywoływana tuż po utworzeniu konkretu klasy repr (self) "oficjalna" reprezentacja obiektu, wywoływana przy użyciu wbudowanej funkcji repr(instancja) str (self) "nieformalna" reprezentacja obiektu, wywoływana przy użyciu str(instancja)lub print instancja len (self) funkcja wywoływana po użyciu w kodzie polecenia len(instancja) cmp (self,other) funkcja wywoływana w momencie porównywania dwóch konkretów danej klasy del (self) funkcja wywoływana tuż przed zniszczeniem obiektu Więcej pod adresem method names ( method names). Uwaga! Tworzenie nowych klas najlepiej zaczynać od zdefiniowania dwóch funkcji: init ułatwia tworzenie instancji klasy str przydaje się przy debugowaniu Kilka słów o metodzie init wywoływana po stworzeniu konkretu klasy wygląda jak konstruktor działa jak konstruktor "brzmi" jak konstruktor nie jest konstruktorem w sensie C++, ponieważ wykonywana jest już po stworzeniu obiektu instancji klasy nie zwraca wartości Kilka słów o metodzie del wywoływana tuż przed zniszczeniem instancji klasy destruktor wyjątki (o tym później), które pojawią się w trakcie wykonywania funkcji del, są ignorowane

12 In [33]: class Point: def init ( self, x=0, y=0): class_name = self. class. name print(class_name, "initialized") self.x = x self.y = y def coords(self): print(self.x,self.y) def del (self): class_name = self. class. name print(class_name, "destroyed") In [34]: a = Point() Point initialized In [35]: a.coords() 0 0 In [36]: del a Point destroyed In [37]: a = Point(1,2) Point initialized In [38]: a.coords() 1 2 In [39]: a = Point(3,2) Point initialized Point destroyed Przeciążanie operatorów

13 Przeciążanie realizowane jest również przy pomocy metod o nazwach specjalnych: add (self,other) dodawanie sub (self,other) odejmowanie mul (self,other) mnożenie div (self,other) dzielenie pow (self,other[,modulo]) potęgowanie Więcej infomacji na ten temat pod adresem names ( method names) In [40]: import math class Vector: """Example vector class""" def init (self,*args): """Create a vector, example: v = Vector(1,2)""" if len(args)==0: self.values = (0,0) else: self.values = args def norm(self): """Returns the norm (length) of the vector""" return math.sqrt(sum(el**2 for el in self.values)) def add (self,other): """Returns the vector sum of self and other""" added = tuple( a+b for a,b in zip(self.values,other.values)) return Vector(*added) def sub (self,other): """Returns the vector difference of self and other""" subbed = tuple( a-b for a,b in zip(self.values,other.values)) return Vector(*subbed) def len (self): return len(self.values) def repr (self): return str(self.values) In [41]: v1 = Vector(1,2) v2 = Vector(3,4) In [42]: print(v2.norm()) print(len(v2)) 5.0 2

14 In [43]: print(v1+v2) (4, 6) In [44]: print(v1-v2) (-2, -2) In [45]: w = v1 - v2 In [46]: type(w) Out[46]: main.vector In [47]: w.norm() Out[47]: In [48]: print(w) (-2, -2) Atrybuty klas Jeżeli w definicji klasy zmienne wprowadzane są poza funkcją init, stanowią one atrybuty klasy, a nie jej konkretu: In [49]: class counter: count = 0 def init (self): self. class.count += 1 In [50]: counter Out[50]: main.counter

15 In [51]: counter.count Out[51]: 0 In [52]: c = counter() In [53]: counter.count Out[53]: 1 In [54]: d = counter() In [55]: counter.count Out[55]: 2 In [56]: counter.count = 0 In [57]: counter.count Out[57]: 0 Składowe prywatne Każdy identyfikator o nazwie zmienna(przynajmniej dwa znaki podkreślenia na początku i co najwyżej jeden na końcu) zastępowany jest automatycznie przez _nazwaklasy zmienna: namiastka zmiennych prywatnych klasy w C++ bezpośredni dostęp do takich zmiennych ciągle możliwy In [58]: class counter2: count = 0 def init (self): self. class. count += 1

16 In [59]: a = counter2() Point destroyed In [60]: b = counter2() In [61]: #"normalny" dostęp nie działa print(counter2. count) AttributeError Traceback (most recent ca ll last) <ipython-input-61-4d383fe1004b> in <module>() 1 #"normalny" dostęp nie działa ----> 2 print(counter2. count) AttributeError: type object 'counter2' has no attribute ' count' In [62]: #a jednak dla chcącego nic trudnego print(counter2._counter2 count) 2 Dziedziczenie In [63]: # %load particles.py

17 In [64]: class Particle: def init (self,mass,velocity): self.m = mass self.v = velocity def momentum(self): return self.m*self.v def repr (self): msg = "(m:%2.1f,v:%2.1f)" % (self.m,self.v) return msg class Boson(Particle): def init (self,mass,velocity,spin): Particle. init (self,mass,velocity) self.s = spin def repr (self): msg = "(m:%2.1f, v:%2.1f, s:%2.1f)"\ % (self.m,self.v,self.s) return msg def spin(self): return self.s #a = Boson(1.2,2.1,3.0) #print a.spin() #print a.momentum() #print a In [65]: from particles import * In [66]: b = Boson(1.2,2.1,3.0)

18 In [67]: b.spin() Out[67]: 3.0 In [68]: b.momentum() Out[68]: 2.52 In [69]: b Out[69]: (m:1.2, v:2.1, s:3.0) nazwa klasy bazowej musi być zdefiniowana w zasięgu zawierającym definicję klasy pochodnej jeśli poszukiwany atrybut nie jest znajdowany w klasie, poszukiwany jest w klasie bazowej klasy pochodne mogą przesłaniać metody ich klas bazowych przesłonięcie metody w klasie pochodniej jest raczej rozszerzeniem zbioru obsługiwanych funkcji niż zastąpieniem jednego elementu innym Dziedziczenie wielorakie class Pochodna(Bazowa1,Bazowa2,Bazowa3): <instrukcje> najpierw w głąb, potem na prawo jeśli atrybut nie zostanie znaleziony w klasie Pochodna, będzie poszukiwany w klasie Bazowa1i w jej klasach bazowych jeśli atrybutu nie ma w klasie Bazowa1, poszukiwanie zostanie przeniesione do Bazowa2itd. może prowadzić do problemów w pielęgnacji kodu (unikanie konfliktów nazw w Pythonie to tylko umowa) zalecane jest oszczędne używanie Serializacja (marynowanie) instancji klas

19 In [70]: import pickle a = Particle(2.0,3.0) print(a) print(a.momentum()) of = open("jar","wb") pickle.dump(a,of) of.close() (m:2.0,v:3.0) 6.0 In [71]:!cat jar cparticles Particle q\00) q}q(x\00\00\00vqg@\00\00\00\00\00\00x\00\00\00mqg@\00\00\00\0 0\00\00\00ub. In [72]: f = open("jar","rb") b = pickle.load(f) f.close() print(b) (m:2.0,v:3.0) In [73]: type(b) Out[73]: particles.particle In [74]: print(id(b), id(a))

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

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego Iwona Kochaoska Programowanie Obiektowe Programowanie obiektowe (ang. object-oriented programming) - metodyka tworzenia programów komputerowych,

Bardziej szczegółowo

Kurs rozszerzony języka Python

Kurs rozszerzony języka Python Wykład 2. 13 października 2017 Plan wykładu Klasy i obiekty 1 Klasy i obiekty 2 3 4 Plan wykładu Klasy i obiekty 1 Klasy i obiekty 2 3 4 Deklaracja klasy Klasy i obiekty Przykłady class Figura: Pierwsza

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

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

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

Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r. Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r. Programowanie obiektowe Programowanie obiektowe (z ang. object-oriented programming), to

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

Programowanie i projektowanie obiektowe

Programowanie i projektowanie obiektowe Programowanie i projektowanie obiektowe Metaprogramowanie (w Pythonie) Paweł Daniluk Wydział Fizyki Jesień 2016 P. Daniluk(Wydział Fizyki) PO w. XI Jesień 2016 1 / 32 Wstęp ideologiczny Języki programowania

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Metody statyczne i klasowe Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk (Wydział Fizyki) PO w. VI Jesień 2013 1 / 23 W poprzednich odcinkach... Klasy kategorie obiektów Przynależność

Bardziej szczegółowo

.NET Klasy, obiekty. ciąg dalszy

.NET Klasy, obiekty. ciąg dalszy .NET Klasy, obiekty ciąg dalszy Przeciążanie operatorów 1 W języku C# istnieje możliwość zdefiniowania funkcjonalności dużej części operatorów dla typów stworzonych przez użytkownika. Dzięki takiemu zabiegowi,

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

Typy klasowe (klasy) 1. Programowanie obiektowe. 2. Założenia paradygmatu obiektowego:

Typy klasowe (klasy) 1. Programowanie obiektowe. 2. Założenia paradygmatu obiektowego: Typy klasowe (klasy) 1. Programowanie obiektowe Programowanie obiektowe (ang. object-oriented programming) to metodologia tworzenia programów komputerowych, która definiuje programy za pomocą obiektów

Bardziej szczegółowo

Ćwiczenie 5. Python 3: Programowanie obiektowe i dziedziczenie

Ćwiczenie 5. Python 3: Programowanie obiektowe i dziedziczenie Wizualizacja danych Ćwiczenie 5 Python 3: Programowanie obiektowe i dziedziczenie Dziedziczenie Mając klasę bazową możemy utworzyć klasę pochodną, która będzie dziedziczyć po klasie bazowej czyli będzie

Bardziej szczegółowo

Podstawy Języka Java

Podstawy Języka Java Podstawy Języka Java Programowanie obiektowe Programowanie obiektowe (z ang. object-oriented programming), to paradygmat programowania, w którym programy definiuje się za pomocą obiektów elementów łączących

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

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 obiektowe, wykład nr 6. Klasy i obiekty

Programowanie obiektowe, wykład nr 6. Klasy i obiekty Dr hab. inż. Lucyna Leniowska, prof. UR, Zakład Mechatroniki, Automatyki i Optoelektroniki, IT Programowanie obiektowe, wykład nr 6 Klasy i obiekty W programowaniu strukturalnym rozwój oprogramowania oparto

Bardziej szczegółowo

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/

Bardziej szczegółowo

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

2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne Tematyka wykładów 1. Wprowadzenie. Klasy cz. 1 - Język C++. Programowanie obiektowe - Klasy i obiekty - Budowa i deklaracja klasy. Prawa dostępu - Pola i funkcje składowe - Konstruktor i destruktor - Tworzenie

Bardziej szczegółowo

Podstawy programowania. Wykład PASCAL. Wstęp do programowania obiektowego. dr Artur Bartoszewski - Podstawy programowania, sem.

Podstawy programowania. Wykład PASCAL. Wstęp do programowania obiektowego. dr Artur Bartoszewski - Podstawy programowania, sem. Podstawy programowania Wykład PASCAL Wstęp do programowania obiektowego 1 Programowanie obiektowe - definicja Programowanie obiektowe paradygmat programowania, w którym programy definiuje się za pomocą

Bardziej szczegółowo

Język programowania. Andrzej Bobyk http://www.alfabeta.lublin.pl. www.alfabeta.lublin.pl/jp/

Język programowania. Andrzej Bobyk http://www.alfabeta.lublin.pl. www.alfabeta.lublin.pl/jp/ Język programowania Andrzej Bobyk http://www.alfabeta.lublin.pl www.alfabeta.lublin.pl/jp/ Literatura K. Reisdorph: Delphi 6 dla każdego. Helion, Gliwice 2001 A. Grażyński, Z. Zarzycki: Delphi 7 dla każdego.

Bardziej szczegółowo

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody Obiektowy PHP Czym jest obiekt? W programowaniu obiektem można nazwać każdy abstrakcyjny byt, który programista utworzy w pamięci komputera. Jeszcze bardziej upraszczając to zagadnienie, można powiedzieć,

Bardziej szczegółowo

OBIEKTY PHP. G. Panuś

OBIEKTY PHP. G. Panuś OBIEKTY PHP G. Panuś Podstawowym elementem programowania obiektowego jest klasa Klasa zawiera Zmienne właściwości Klasa Funkcje metody Definiowanie klasy Do definiowania klasy służy polecenie class class

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

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

10. Programowanie obiektowe w PHP5

10. Programowanie obiektowe w PHP5 Ogólnie definicja klasy wygląda jak w C++. Oczywiście elementy składowe klasy są zmiennymi PHP, stąd nieśmiertelne $. Warto zauważyć, że mogą one mieć wartość HHH mgr inż. Grzegorz Kraszewski TECHNOLOGIE

Bardziej szczegółowo

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Polimorfizm, metody wirtualne i klasy abstrakcyjne Programowanie obiektowe Polimorfizm, metody wirtualne i klasy abstrakcyjne Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Polimorfizm,

Bardziej szczegółowo

Zaawansowane programowanie w języku C++ Programowanie obiektowe

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

Bardziej szczegółowo

Spis treści. Funkcje. 1 Funkcje 1.1 Zadanie Zadanie Zadanie Zadanie Zadanie Zadanie Zadanie 7

Spis treści. Funkcje. 1 Funkcje 1.1 Zadanie Zadanie Zadanie Zadanie Zadanie Zadanie Zadanie 7 Spis treści 1 Funkcje 1.1 Zadanie 1 1.2 Zadanie 2 1.3 Zadanie 3 1.4 Zadanie 4 1.5 Zadanie 5 1.6 Zadanie 6 1.7 Zadanie 7 Funkcje Przy programowaniu często zdarza się, że pewne czynności chcemy wykonywać

Bardziej szczegółowo

Dziedziczenie. Tomasz Borzyszkowski

Dziedziczenie. Tomasz Borzyszkowski Dziedziczenie Tomasz Borzyszkowski Podstawy Zobacz: Dziedzictwo1.java Dziedzictwo2.java Dziedziczenie jest jedną z podstawowych cech OOP ponieważ umożliwia łatwe implementowanie klasyfikacji hierarchicznych.

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

Kurs WWW. Paweł Rajba. pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/

Kurs WWW. Paweł Rajba. pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/ Paweł Rajba pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/ Spis treści Wprowadzenie Automatyczne ładowanie klas Składowe klasy, widoczność składowych Konstruktory i tworzenie obiektów Destruktory i

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

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

Dekoratora używa się wstawiając linijkę zaczynającą się przed definicją dekorowanego obiektu (klasy czy funkcji).

Dekoratora używa się wstawiając linijkę zaczynającą się przed definicją dekorowanego obiektu (klasy czy funkcji). Dekoratory są w miarę ezoteryczną cechą Pythona w przeciwieństwie do funkcji, klas czy iteratorów nie są powszechną cechą języków programowania. Niemniej, warto je omówić mimo wszystko, gdyż są niezwykle

Bardziej szczegółowo

Przeciążanie operatorów

Przeciążanie operatorów Instrukcja laboratoryjna nr 4 Programowanie w języku C 2 (C++ poziom zaawansowany) Przeciążanie operatorów dr inż. Wilk-Jakubowski Jacek mgr inż. Lasota Maciej dr inż. Kaczmarek Tomasz Wprowadzenie Oprócz

Bardziej szczegółowo

PHP 5 język obiektowy

PHP 5 język obiektowy PHP 5 język obiektowy Wprowadzenie Klasa w PHP jest traktowana jak zbiór, rodzaj różnych typów danych. Stanowi przepis jak stworzyć konkretne obiekty (instancje klasy), jest definicją obiektów. Klasa reprezentuje

Bardziej szczegółowo

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

Wykład 1. Projektowanie efektywnych algorytmów przetwarzania danych w sieciowych systemach usług, rzeczy i multimediów. Wykład 1. Projektowanie efektywnych algorytmów przetwarzania danych w sieciowych systemach usług, rzeczy i multimediów. Paweł Świątek Agenda 1. Sprawy organizacyjne 2. Zasady zaliczenia 3. Cele kursu 4.

Bardziej szczegółowo

Spis treści. Dekoratory. 1 Dekoratory 1.1 Zadanie Zadanie Zadanie Zadanie 4

Spis treści. Dekoratory. 1 Dekoratory 1.1 Zadanie Zadanie Zadanie Zadanie 4 Spis treści 1 Dekoratory 1.1 Zadanie 1 1.2 Zadanie 2 1.3 Zadanie 3 1.4 Zadanie 4 Dekoratory Dekoratory w Pythonie służą do zastępowania zdefiniowanych przez nas funkcji przez funkcje (lub inne obiekty)

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

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Laboratorium 3 i 4 - przypomnienie wiadomości o OOP na przykładzie Javy mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 8 marca 2017 1 / 20 mgr inż. Krzysztof Szwarc

Bardziej szczegółowo

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

C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie C++ - DZIEDZICZENIE. C++ - DZIEDZICZENIE Do najważniejszych cech języka C++ należy możliwość wielokrotnego wykorzystywania kodu Prymitywnym, ale skutecznym sposobem jest kompozycja: deklarowanie obiektów wewnątrz innych klas,

Bardziej szczegółowo

Modelowanie i Programowanie Obiektowe

Modelowanie i Programowanie Obiektowe Modelowanie i Programowanie Obiektowe Wykład I: Wstęp 20 październik 2012 Programowanie obiektowe Metodyka wytwarzania oprogramowania Metodyka Metodyka ustandaryzowane dla wybranego obszaru podejście do

Bardziej szczegółowo

Polimorfizm. dr Jarosław Skaruz

Polimorfizm. dr Jarosław Skaruz Polimorfizm dr Jarosław Skaruz http://jareks.ii.uph.edu.pl jaroslaw@skaruz.com O czym będzie? finalne składowe klasy abstrakcyjne interfejsy polimorfizm Finalne składowe Domyślnie wszystkie pola i metody

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

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

Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop Spis treści Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop. 2017 Spis treści Przedmowa 11 1. Jak w programie 21 Czym jest program? 21 Uruchamianie interpretera języka Python 22 Pierwszy

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

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

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016 Wykład 2 17 marca 2016 Dziedziczenie Klasy bazowe i potomne Dziedziczenie jest łatwym sposobem rozwijania oprogramowania. Majac klasę bazowa możemy ja uszczegółowić (dodać nowe pola i metody) nie przepisujac

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

Dziedziczenie. Streszczenie Celem wykładu jest omówienie tematyki dziedziczenia klas. Czas wykładu 45 minut.

Dziedziczenie. Streszczenie Celem wykładu jest omówienie tematyki dziedziczenia klas. Czas wykładu 45 minut. Dziedziczenie Streszczenie Celem wykładu jest omówienie tematyki dziedziczenia klas. Czas wykładu 45 minut. Rozpatrzmy przykład przedstawiający klasy Student oraz Pracownik: class Student class Pracownik

Bardziej szczegółowo

Podstawy bioinformatyki 2017/18

Podstawy bioinformatyki 2017/18 JEZYK PROGRAMOWANIA PYTHON: WPROWADZANIE DANYCH I FORMATOWANIE WYNIKÓW, WEWNETRZNA DOKUMENTACJA, PROGRAMY I MODUŁY E. Dyguda-Kazimierowicz 1 Formatowanie danych wyjściowych Do formatowania wyświetlanych

Bardziej szczegółowo

Programowanie i projektowanie obiektowe

Programowanie i projektowanie obiektowe Programowanie i projektowanie obiektowe Python od środka Paweł Daniluk Wydział Fizyki Jesień 2016 P. Daniluk(Wydział Fizyki) PO w. VIII Jesień 2016 1 / 26 Zasięgi nazw (ang. scopes) Przestrzeń nazw Mapowanie

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 i projektowanie obiektowe

Programowanie i projektowanie obiektowe Programowanie i projektowanie obiektowe Obiekty i klasy w Pythonie Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk (Wydział Fizyki) PO w. III Jesień 2013 1 / 23 Klasy i obiekty Klasy w implementacji

Bardziej szczegółowo

Technologie cyfrowe semestr letni 2018/2019

Technologie cyfrowe semestr letni 2018/2019 Technologie cyfrowe semestr letni 2018/2019 Tomasz Kazimierczuk Wykład 8 (15.04.2019) Kompilacja Kompilacja programu (kodu): proces tłumaczenia kodu napisanego w wybranym języku na kod maszynowy, zrozumiały

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

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

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

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej. Polimorfizm jest filarem programowania obiektowego, nie tylko jeżeli chodzi o język C++. Daje on programiście dużą elastyczność podczas pisania programu. Polimorfizm jest ściśle związany z metodami wirtualnymi.

Bardziej szczegółowo

1 Atrybuty i metody klasowe

1 Atrybuty i metody klasowe 1 Atrybuty i metody klasowe Składowe klasowe (statyczne) Każdy obiekt klasy posiada własny zestaw atrybutów. Metody używają atrybutów odpowiedniego obiektu. Czasem potrzeba atrybutów wspólnych dla wszystkich

Bardziej szczegółowo

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02 METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się

Bardziej szczegółowo

Podstawy programowania III

Podstawy programowania III Podstawy programowania III Jan Kazimirski 1 Opis zajęć Zastosowanie funkcji i obiektów w PHP powtórzenie zagadnień. Dostęp do bazy danych PostgreSQL z poziomu skryptu PHP. Wprowadzenie do języka SQL. Przykłady

Bardziej szczegółowo

Klasy Obiekty Dziedziczenie i zaawansowane cechy Objective-C

Klasy Obiekty Dziedziczenie i zaawansowane cechy Objective-C #import "Fraction.h" #import @implementation Fraction -(Fraction*) initwithnumerator: (int) n denominator: (int) d { self = [super init]; } if ( self ) { [self setnumerator: n anddenominator:

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

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

Oracle PL/SQL. Paweł Rajba.

Oracle PL/SQL. Paweł Rajba. Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 8 Wprowadzenie Definiowanie typu obiektowego Porównywanie obiektów Tabele z obiektami Operacje DML na obiektach Dziedziczenie -

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

Język programowania zbiór reguł określających, które ciągi symboli tworzą program komputerowy oraz jakie obliczenia opisuje ten program.

Język programowania zbiór reguł określających, które ciągi symboli tworzą program komputerowy oraz jakie obliczenia opisuje ten program. PYTHON Język programowania zbiór reguł określających, które ciągi symboli tworzą program komputerowy oraz jakie obliczenia opisuje ten program. Aby program napisany w danym języku mógł być wykonany, niezbędne

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Wykład 1 Piotr Błaszyński Wydział Informatyki Zachodniopomorskiego Uniwersytetu Technologicznego 2 lutego 2017 Uwaga: dużo trudnych słów - wszystkie (w swoim czasie) zostaną omówione): - Enkapsulacja Hermetyzacja

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

> C++ dziedziczenie. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki

> C++ dziedziczenie. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki > C++ dziedziczenie Dane: Iwona Polak iwona.polak@us.edu.pl Uniwersytet Śląski Instytut Informatyki 1432108800 > Dziedziczenie Dziedziczenie C++ dziedziczenie 2 / 13 > Dziedziczenie Dziedziczenie * to

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

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

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

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy wykład 2, część 1 1 Język JAVA podstawy Plan wykładu: 1. Rodzaje programów w Javie 2. Tworzenie aplikacji 3. Tworzenie apletów 4. Obsługa archiwów 5. Wyjątki 6. Klasa w klasie! 2 Język

Bardziej szczegółowo

Języki i paradygmaty programowania Wykład 2. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/18

Języki i paradygmaty programowania Wykład 2. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/18 Dariusz Wardowski dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/18 Literatura Języki i paradygmaty programowania Wykład 2 1. C. S. Horstman, G. Cornell, core Java 2 Podstawy, Helion 2003

Bardziej szczegółowo

Język Python (2) Język Python (2) 1/36

Język Python (2) Język Python (2) 1/36 Język Python (2) Język Python (2) 1/36 Język Python (2) 2/36 Podstawy funkcji Pojęcia podstawowe Instrukcja def tworzy obiekt funkcji i przypisuje go do nazwy Instrukcja return przekazuje obiekt wynikowy

Bardziej szczegółowo

Typy zmiennych proste i złożone. Programowanie komputerów. Tablica. Złożone typy zmiennych. Klasa. Struktura

Typy zmiennych proste i złożone. Programowanie komputerów. Tablica. Złożone typy zmiennych. Klasa. Struktura Programowanie komputerów Programowanie obiektowe. Typy zmiennych proste i złożone Typy zmiennych "wbudowane", tj. identyfikowane przez słowa kluczowe, są określane jako proste: int short long float double

Bardziej szczegółowo

PARADYGMATY PROGRAMOWANIA Wykład 3

PARADYGMATY PROGRAMOWANIA Wykład 3 PARADYGMATY PROGRAMOWANIA Wykład 3 Definiowanie operatorów i ich przeciążanie Przykłady zastosowania operatorów: a) operator podstawienia ( = ) obiektów o złożonej strukturze, b) operatory działania na

Bardziej szczegółowo

Programowanie obiektowe W1 Wprowadzenie. Dr hab. inż. Lucyna Leniowska, prof. UR Zakład Mechatroniki, Automatyki i Optoelektroniki

Programowanie obiektowe W1 Wprowadzenie. Dr hab. inż. Lucyna Leniowska, prof. UR Zakład Mechatroniki, Automatyki i Optoelektroniki Programowanie obiektowe W1 Wprowadzenie Dr hab. inż. Lucyna Leniowska, prof. UR Zakład Mechatroniki, Automatyki i Optoelektroniki Ogólna charakterystyka języka C++ C++ jest obiektowym językiem programowania,

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Podstawowe cechy i możliwości języka Scala mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 2017 1 / 32 mgr inż. Krzysztof Szwarc Programowanie obiektowe Informacje

Bardziej szczegółowo

private - oznacza, że wszystkie elementy klasy bazowej zmieniają się w prywatne.

private - oznacza, że wszystkie elementy klasy bazowej zmieniają się w prywatne. C++/Dziedziczenie 1 C++/Dziedziczenie Wstęp - Co to jest dziedziczenie Często podczas tworzenia klasy napotykamy na sytuację, w której klasa ta powiększa możliwości innej klasy, nierzadko precyzując jednocześnie

Bardziej szczegółowo

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

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6 JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM Wykład 6 1 SPECYFIKATOR static Specyfikator static: Specyfikator ten powoduje, że zmienna lokalna definiowana w obrębie danej funkcji nie jest niszczona

Bardziej szczegółowo

TECHNOLOGIE INTERNETOWE WYKŁAD 6. JavaScript Funkcje i obiekty

TECHNOLOGIE INTERNETOWE WYKŁAD 6. JavaScript Funkcje i obiekty 1. Co to jest funkcja? Funkcja jest oddzielnym blokiem kodu, który może być wielokrotnie wykonywany w danym programie, poprzez jej wielokrotne wywoływanie. Do funkcji przekazujemy przeważnie jakieś argumenty,

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia. Wprowadzenie teoretyczne.

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

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

Hackowanie zamrożonych binariów

Hackowanie zamrożonych binariów Hackowanie zamrożonych binariów Piotr Tynecki @ptynecki PyCon PL 2015 Agenda 0x0. Wprowadzenie 0x1. Tradycyjny model wykonaczy kodu CPythona 0x2. Kod bajtowy, charakterystyka plików.pyc /.pyo 0x3. Zamrożone

Bardziej szczegółowo

Wstęp do programowania obiektowego. Wykład 1 Algorytmy i paradygmaty Podstawowe pojęcia PO

Wstęp do programowania obiektowego. Wykład 1 Algorytmy i paradygmaty Podstawowe pojęcia PO Wstęp do programowania obiektowego Wykład 1 Algorytmy i paradygmaty Podstawowe pojęcia PO 1 Cele przedmiotu Zapoznanie z podstawowymi pojęciami oraz technikami programowania obiektowego na przykładzie

Bardziej szczegółowo

Wprowadzenie w dziedziczenie. Klasa D dziedziczy klasę B: Klasa B klasa bazowa (base class), klasa D klasa pochodna (derived class).

Wprowadzenie w dziedziczenie. Klasa D dziedziczy klasę B: Klasa B klasa bazowa (base class), klasa D klasa pochodna (derived class). Wprowadzenie w dziedziczenie Klasa D dziedziczy klasę B: B klasa bazowa D klasa pochodna Klasa B klasa bazowa (base class), klasa D klasa pochodna (derived class). Najpierw jest tworzona klasa bazowa,

Bardziej szczegółowo

Język programowania Scala / Grzegorz Balcerek. Wyd. 2. Poznań, cop Spis treści

Język programowania Scala / Grzegorz Balcerek. Wyd. 2. Poznań, cop Spis treści Język programowania Scala / Grzegorz Balcerek. Wyd. 2. Poznań, cop. 2016 Spis treści Przedmowa 1 Stosowana notacja 1 1. Wprowadzenie 3 1.1. Konsola interaktywna języka Scala 3 1.2. Zmienne 5 1.3. Wartości

Bardziej szczegółowo

Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)

Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.) Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.) przeznaczony do programowania zarówno pod ios jak i Mac OS X bazuje na logice Objective-C bez kompatybilności

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu Programowanie obiektowe - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia.

Bardziej szczegółowo

hierarchie klas i wielodziedziczenie

hierarchie klas i wielodziedziczenie Programowanie Obiektowe (język C++) Wykład 15. hierarchie klas i wielodziedziczenie Tomasz Marks - Wydział MiNI PW -1- Tomasz Marks - Wydział MiNI PW -2- Hierarchie klas Dziedziczenie wprowadza relację

Bardziej szczegółowo

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

Język programowania: Lista instrukcji (IL Instruction List) Język programowania: Lista instrukcji (IL Instruction List) Wykład w ramach przedmiotu: Sterowniki programowalne Opracował dr inż. Jarosław Tarnawski 08.12.2009 Norma IEC 1131 Języki tekstowe Języki graficzne

Bardziej szczegółowo

Programowanie w języku Python. Grażyna Koba

Programowanie w języku Python. Grażyna Koba Programowanie w języku Python Grażyna Koba Kilka definicji Program komputerowy to ciąg instrukcji języka programowania, realizujący dany algorytm. Język programowania to zbiór określonych instrukcji i

Bardziej szczegółowo

Zaawansowane programowanie w C++ (PCP)

Zaawansowane programowanie w C++ (PCP) Zaawansowane programowanie w C++ (PCP) Wykład 4 - wzorce projektowe. dr inż. Robert Nowak - p. 1/18 Powtórzenie klasy autonomiczne tworzenie nowych typów: dziedziczenie i agregacja dziedziczenie: przedefiniowywanie

Bardziej szczegółowo

Diagramy klas. dr Jarosław Skaruz http://ii3.uph.edu.pl/~jareks jaroslaw@skaruz.com

Diagramy klas. dr Jarosław Skaruz http://ii3.uph.edu.pl/~jareks jaroslaw@skaruz.com Diagramy klas dr Jarosław Skaruz http://ii3.uph.edu.pl/~jareks jaroslaw@skaruz.com O czym będzie? Notacja Ujęcie w różnych perspektywach Prezentacja atrybutów Operacje i metody Zależności Klasy aktywne,

Bardziej szczegółowo

Paweł Kurzawa, Delfina Kongo

Paweł Kurzawa, Delfina Kongo Paweł Kurzawa, Delfina Kongo Pierwsze prace nad standaryzacją Obiektowych baz danych zaczęły się w roku 1991. Stworzona została grupa do prac nad standardem, została ona nazwana Object Database Management

Bardziej szczegółowo

Klasy abstrakcyjne, interfejsy i polimorfizm

Klasy abstrakcyjne, interfejsy i polimorfizm Programowanie obiektowe 12 kwietnia 2011 Organizacyjne Klasówka będzie 20 IV 2011. Sale jeszcze są pertraktowane. Materiał do wyjątków włącznie. Można mieć swoje materiały nieelektroniczne. Wywołanie z

Bardziej szczegółowo