Wykład 2 Programowanie zorientowane obiektowo w Pythonie
|
|
- Jerzy Chmiel
- 7 lat temu
- Przeglądów:
Transkrypt
1 Wykład 2 Programowanie zorientowane obiektowo w Pythonie Plan wykładu: 1. Podstawowe informacje 2. Funkcje specjalne 3. Przeciążanie funkcji i operatorów 4. Dokumentowanie klasy 5. Wbudowane atrybuty obiektu i klasy 6. Konstruktor i destruktor 7. Atrybuty obiektu, atrybuty prywatne, statyczne 8. Łańcuchowa reprezentacja obiektu 9. Funkcje określające prawdziwość obiektu 10. Metody porównania obiektów 11. Metody statyczne 12. Dziedziczenie 13. Dziedziczenie wielopokoleniowe 14. Wyjątki 15. Implementacja kolekcji 1
2 Z ro dła Strona Marcina Młotkowskiego: James O. Knowlton, Python. Projekty do wykorzystania, Helion Chris Fehily, Po prostu Python, Helion 2
3 Podstawowe informacje Każda klasa dziedziczy po object. Poniżej zdefiniowano pustą klasę class Person(object): pass Definicja klasy kończy się w miejscu, gdzie kończymy wcięcie. Każda metoda klasy jako pierwszy parametr przyjmuje obiekt, w którym jest zdefiniowana (self): class Person(object): def wyswietl_napis(self): print 'Napis' Podczas wywołania metody obiektu nie wymieniamy na liście argumentów self. Jest on automatycznie przekazywany przez Pythona do metody. 3
4 Funkcje specjalne Nazwy metod specjalnych zawsze rozpoczynają się i kończą dwoma znakami podkreślenia (na przykład init (). Python uruchamia te metody automatycznie, gdy interpreter napotka funkcję wbudowaną lub operator odpowiadający danej metodzie specjalnej. Python używa metod specjalnych w następujących przypadkach: tworzenie i usuwanie egzemplarza; tworzenie reprezentacji łańcuchowych egzemplarza; definiowanie wartości prawdziwości egzemplarza; porównywanie egzemplarzy; dostęp do atrybutów egzemplarza; traktowanie egzemplarzy jak sekwencji i słowników; wykonywanie operacji matematycznych na egzemplarzach. Uwaga: Nie można używać metod specjalnych do zmiany zachowania wbudowanych typów. 4
5 Przeciąz anie funkcji i operatoro w Przeciążanie funkcji polega na tym, że funkcja o takiej samej nazwie zachowuje się różnie w zależności od typów lub klas podanych argumentów. Python wybiera odpowiednie działanie automatycznie na podstawie parametrów funkcji, co znaczy, że na przykład wywołuje metodę specjalną str (x) po wywołaniu str(x), jeśli x jest egzemplarzem klasy dysponującej metodą str (). Przeciążanie operatora polega na przypisaniu więcej niż jednej funkcji do danego operatora (+,, *,**,t; itp.). Wykonywana operacja zależy od typów lub klas podanych operandów. Np. operator+ wykonuje dodawanie, jeśli jego operandami są liczby, albo łączenie, jeśli operandami są łańcuchy. Metoda specjalna na przykład add () umożliwia określenie sposobu wykonania działania x + y wtedy, gdy x i y są egzemplarzami klasy. 5
6 Dokumentowanie klasy Na początku definicji klasy możemy umieścić wiersz dokumentacyjny class Point """ A location on the 2D plane """ pass Point. doc A location on the 2D plane Jeżeli nie zostanie podany łańcuch dokumentacyjny to wartością atrybutu doc jest None. Łańcuchy dokumentacyjne można dodawać do metod klasy w taki sam sposób jak do funkcji 6
7 Atrybuty klasy Wbudowane atrybuty klasy i obiektu klasy dict słownik zawierający przestrzeń nazw danej klasy doc name łańcuch dokumentacyjny klasy nazwa klasy module nazwa modułu w którym została zdefiniowana klasa base krotka (może być pusta) zawierająca klasy nadrzędne w kolejności ich występowania na liście klas nadrzędnych Atrybuty obiektu: dict class słownik zawierający przestrzeń nazw obiektu klasa obiektu 7
8 Konstruktor i destruktor class Person(object): counter = 0 def init (self): # konstruktor print 'Jestem konstruktorem' def del (self): # destruktor print 'Jestem destruktorem' p = Person() # Jestem konstruktorem del p # Jestem destruktorem 8
9 Usuwanie egzemplarza Liczba odwołań do obiektu zwiększa się, gdy zostaje on przypisany do nowej nazwy lub umieszczony w kontenerze (liście, kratce lub słowniku). Liczba odwołań do obiektu zmniejsza się, gdy jest on usuwany za pomocą del, gdy odwołanie do niego jest zastępowane innym lub gdy wychodzi poza zakres. Jeśli liczba odwołań do obiektu osiąga zero, Python uruchamia odśmiecanie. >>> a = 39 # Tworzy obiekt <39> >>> b = a # Zwiększa liczbę odwołań do <39> >>>c = [b] #Zwiększa liczbę odwołań do <39> >>> >>> del a #Zmniejsza liczbę odwołań do <39> >>>b = -99 #Zmniejsza liczbę odwołań do <39> >>> c[0] = -1 # Zmniejsza liczbę odwołań do <39> 9
10 Uwaga dotycząca destruktora Jest on wywoływany wtedy, gdy dany egzemplarz ma być usunięty. Metoda ta może być wykorzystana do oczyszczenia wszelkich zasobów pamięci używanych przez egzemplarz. Metoda del () jest rzadko stosowana w praktyce, ponieważ nie ma gwarancji, że będzie wywołana w określonym odstępie czasu (może się zdarzyć, że nie zostanie wywołana nigdy). Nie warto więc polegać na destruktorze przy operacjach zwalniania zasobów (na przykład przy zamykaniu pliku). Lepsze wyniki można uzyskać definiując jakąś jawnie wywoływaną metodę close(), która wykona także operacje oczyszczające. Instrukcja del nie wywołuje metody _del_() bezpośrednio, lecz zmniejsza o jeden liczbę odwołań do obiektu. Destruktor wywoływany jest tylko wtedy, gdy ta liczba stanie się równa zeru. Zliczanie odwołań nie udaje się dla cyklicznych struktur danych, czyli obiektów odwołujących się nawzajem do siebie. Jeśli na przykład x i y odwołują się do siebie nawzajem, to liczba odwołań nigdy nie stanie się równa zeru, więc nigdy nie nastąpi odśmiecanie (dotyczy to także każdego obiektu, do którego odwołują się obiekty x lub y). Python uruchamia okresowo procedurę wykrywania i usuwania cykli. Proces odśmiecania Pythona nie będzie usuwał cyklicznych egzemplarzy, dla których zdefiniowano metodę del (). Jest to następny powód przemawiający za tym, by nie definiować del ( ). 10
11 Atrybuty obiektu (instancji) Zmienne instancji definiujemy w konstruktorze: class Person(object): def init (self): self.firstname = 'Jan' self.lastname = 'Kowalski' Możemy również definiować atrybuty po utworzeniu obiektu: Adam = Person(); Adam.wiek = 25; # Tworzymy nowy atrybut i przypisujemy wartość 25 11
12 Atrybuty prywatne Nazwy elementów prywatnych zaczynamy od class Person(object): private_field = 'top secret' Python zgłasza wyjątek AttributeError przy próbie dostępu z zewnątrz klasy do nazwy prywatnej. 12
13 Przekręcona nazwa atrybutu prywatnego Python ukrywa nazwę prywatną zmieniając jej nazwę wewnętrzną na _classname attrname. Taki mechanizm zabezpieczania nazywany przekręcaniem nazw jest w istocie iluzją, bowiem można uzyskać dostęp do prywatnego atrybutu posługując się jego przekręconą nazwą. >>> class Point: origin = (0, 0) def change_origin (self, x, y): self. origin = (x,y) print "New origin:", self. origin >>> pt = Point() >>> pt.change_origin(-1,1) New origin : (-1, 1) >>> pt. origin Traceback (most recent call last): File "<stdin> ", line 1, in? AttributeError: Point instance has no attribute origin >>> pt._point origin (-1, 1) 13
14 Tworzą łańcuchową reprezentację obiektu. class Point: def init (self, x=0, y=0): self.x = x self.y = y def str _ (self): return "(%g,%g)" % (self.x. self.y) def _repr_(self): return "Point(%s.%s)" % (self.x. self.y) Funkcje str () i repr () >>> from point import Point >>> pt = Point(3,9) >>> str(pt) '(3,9)' >>> print pt (3,9) >>> repr(pt) Point(3,9) >>> 'pt' 'Point(3.9)' Nieformalna reprezentacja łańcuchowa egzemplarza jest zwracana przez str() i print(); jego formalna reprezentacja jest zwracana przez repr() i. Formalna reprezentacja łańcuchowa może być użyta do tworzenia kopii egzemplarza. 14
15 Okres lanie prawdziwos ci obiektu Domyślnie przyjęto, że prawdziwość egzemplarza jest prawdą, lecz za pomocą metody specjalnej nonzero () można nadać jej wartość i zwracać 0 (fałsz) albo 1 (prawda). class Point: def init (self, x=0, y=0): self.x = x self.y = y def str (self): return "(%g, %g)" % (self.x, self.y) def nonzero (self): if self.x ==0 and self.y ==0: return 0 else: return 1 >>> from point import Point >>> pt1 = Point(0,1) >>> pt2 = Point(0,0) >>> pt3 = Point(1,5) >>>for pt in [pt1, pt2, pt3]: if pt: print pt, "is true" else: print pt, "is false" (0. 1) is true (0, 0) is false (1, 5) is true >>> print pt1 and pt2 (0,0) >>> print pt2 or pt3 (0, 5) >>> not pt2 1 15
16 Metody poro wnania obiekto w Do porównywania egzemplarzy za pomocą wbudowanych operatorów porównania(<,<=,>, >=i!=) można zastosować metody specjalne, które zostały wymienione poniżej. Metody te są nazywane metodami pełnego porównywania. Metoda Wynik lt (self.other) le (self,other) gt (self.other) ge (self,other) eq (self,other) ne (self.other) self < other self <= other self > other self >= other self == other self!= other 16
17 def comp (self, other): block Jak definiowac metody poro wnania Wielkość comp () jest jedną z metod porównania, które są przedstawione na poprzedniej stronie. Python wywołuje te metody wtedy, gdy egzemplarz zostanie użyty w wyrażeniu porównującym. Wielkość self dotyczy egzemplarza, dla którego wywoływana jest metoda comp (), zaś other jest egzemplarzem, z którym dany egzemplarz jest porównywany. Metoda porównania może zwracać dowolną wartość, lecz jeśli operator porównania zostanie użyty w kontekście logicznym, wartość ta powinna być interpretowanajako wartość logiczna (1 jako prawda, O jako fałsz); w przeciwnym wypadku Python wywołuje wyjątek TypeError. 17
18 from math import hypot class Point: def init (self, x=0, y=0): self.x = x self.y = y Przykład zastosowania metod poro wnania def _lt_(self, other): return hypot(self.x. self.y)< hypot(other.x, other.y) def _le_(self, other): return hypot(self.x. self.y) <=hypot(other. X, other.y) def _gt_(self, other): return hypot(self.x, self.y) >hypot(other.x, other.y) def _ge_(self, other): return hypot(self.x. self.y) >=hypot(other.x, other.y) 18
19 def _eq_(self, other): return hypot (self.x, self.y)==hypot(other.x. other y) def _ne_(self. other): return hypot(self.x, self.y)!= hypot(other.x, other.y) >>> from point import Point >>> pt1 = Point(0,0) #Odległość = 0 >>> pt2 = Point(2,2) #Odległość = 2.83 >>> pt3 = Point(3.4) # Odległość = 5 >>> pt4 = Point(-3,4) #Odległość = 5 >>> ptl > pt2 0 >>> pt2 <= pt3 == pt4 1 19
20 Pozycyjne poro wnanie dwo ch list class Mylist: def init (self, lst): self.lst = lst def _eq_(self, other): result = [] for i in range(len(self.lst)): If self.lst[i] == other.lst[i]: result.append(1) else: result.append(0) return result >>> from mylist import Mylist >>> lst1 = Mylist([1, 2, 3, 4, 5]) >>> lst2 = Mylist([1, 9, 3, 4, 9]) >>> lst1 == lst2 [1, 0, 1, 1, 0] 20
21 Atrybuty statyczne Definiujemy zaraz po linijce rozpoczynającej definicję klasy: class Person(object): counter = 0 def init (self): Person.counter += 1 def del (self): Person.counter -= 1 p1 = Person() p2 = Person() p1.counter # 2 del p1 p2.counter # 1 21
22 Metody statyczne Metody statyczne definiujemy poprzedzając je oraz nie podając parametru self class def wypisz_napis(): print 'Napis' Person.wypisz_napis() # Napis 22
23 Metody prywatne Nazwy metod prywatnych rozpoczynamy od dwóch podkreślników class Person(object): def top_secret_method(): print 'Secret information' p = Person() p. top_secret_method() #' top_secret_method' # Attribute Error: 'Person' object has no attribute 23
24 Dziedziczenie class Shape: origin = (0.0) shape_name = None def init (self, x=0, y=0): self x = x self y = y def str (self): return "%s, x=%g, y=%g" % (self.shape_name, self.x, self.y) def move(self, delta_x, delta_y): self.x +=delta_x self.y += delta_y class Circle(Shape): shape_name = "circle" def init (self, x=0, y=o, radius=1): Shape init (self. x. y) self.radius = radius def str (self): return Shape. str (self) + (",radius=%g" % (self.radius)) def area(self): return self.radius * self.radius *
25 class Square(Shape): shape_name = "square" def init (self, x=0, y=0, side=1): Shape init (self, x, y) self.side = side def str_ (self): return Shape. str (self) + (",side=%g" % (self.side)) def area(self): return self.side* self.side >>> from shape import Shape. Circle, Square >>> circle = Circle(0,0,2) >>> square = Square(0,0,3) >>> print circle Circle, x=0, y=0, radius=2 >>> print square Square, x=0, y=0, side=3 >>> print circle.origin, square.origin (0, 0) (0, 0) >>> circle.area() >>> square.area() 9 >>> circle.move( -1,- 2) >>> print circle Circle, x=-1, y=-2, radius=2 >>> square. move(2,3) >>> print square Square, x=2,y=3, side=3 25
26 Wielodziedziczenie class Samochod: def naprzod(self): class Okret: def naprzod(self): class Amfibia(Lodz,Samochod): problem: amf = Amfibia() amf.naprzod() # która funkcja zostanie wywołana z klasy Samochod czy Okret? 26
27 Rozwiązywanie konfliktu przy dziedziczeniu wielokrotnym Przeszukiwanie w głąb od lewej do prawej 27
28 Dostęp do przodka Dostęp do przodka uzyskujemy poprzez metodę super() class ABC(object): def A(self): print 'A from ABC' class A(ABC): def A(self): super(a, self).a() a = A() a.a() # 'A from ABC' 28
29 Uwagi do dziedziczenia Jeśli klasa podrzędna definiuje atrybut o takiej samej nazwie, jaką ma atrybut jej klasy nadrzędnej, to egzemplarze klasy podrzędnej korzystają z jej atrybutów, chyba że atrybut jest jawnie kwalifikowany za pomocą nazwy klasy nadrzędnej (z operatorem kropki). Wewnątrz egzemplarza klasy podrzędnej Python szuka nazw atrybutów w następującej kolejności: przestrzeń nazw egzemplarza jest ona dostępna poprzez argument self i zawiera zmienne egzemplarza, zmienne prywatne egzemplarza oraz zmienne egzemplarza klasy nadrzędnej; przestrzeń nazw klasy zawiera ona metody, zmienne klasy, metody prywatne i prywatne zmienne klasy; przestrzeń nazw klasy nadrzędnej zawiera ona metody klasy nadrzędnej, zmienne klasy nadrzędnej, metody prywatne klasy nadrzędnej i prywatne zmienne klasy nadrzędnej. Jeśli klasa znajduje się w innym module niż jej klasa nadrzędna, to można kwalifikować nazwę tej klasy nadrzędnej za pomocą nazwy modułu: class subclass(module.superclass) 29
30 Property class Klasa(object): def init (self): self. x = None def getx(self): return self. x klasa = Klasa() klasa.x = 12 print klasa.x del klasa.x # klasa.setx(12) # print klasa.getx() # klasa.delx() def setx(self, value): self._x = value def delx(self): del self. x x = property(getx, setx, delx, 'Zmienna x'); 30
31 Property dla atrybutu tylko do odczytu Definicja property voltage dla atrybutu tylko do odczytu _voltage class Parrot(object): def init (self): self._voltage = def voltage(self): """Get the current voltage.""" return self._voltage 31
32 Property inny sposo b definicji class C(object): def init (self): self._x = def x(self): """I'm the 'x' property.""" return def x(self, value): self._x = def x(self): del self._x 32
33 Wyjątki Nawet jeżeli wyrażenie Pythona jest składniowo poprawne, może to spowodować błąd podczas próby wykonania. Błędy wykryte podczas wykonywania nazywane są wyjątkami i nie są bezwarunkowo krytyczne. Na kolejnych slajdach zaprezentuję jak obsługiwać wyjątki w programach Pythona. Większość wyjątków nie jest obsługiwanych przez programy i zwracają komunikaty o błędach: >>> 10 * (1/0) Traceback (most recent call last): File "<stdin>", line 1, in? ZeroDivisionError: integer division or modulo by zero >>> 4 + spam*3 Traceback (most recent call last): File "<stdin>", line 1, in? NameError: name 'spam' is not defined >>> '2' + 2 Traceback (most recent call last): File "<stdin>", line 1, in? TypeError: cannot concatenate 'str' and 'int' objects Wyjątki mają różne typy, podawane w komunikacie błędu: ZeroDivisionError, NameError, TypeError. Innymi słowy jest to nazwa wyjątku wbudowanego (identyfikator). 33
34 Built-in Exceptions lista wbudowanych wyjątków i ich znaczenie. Wyłapywanie wyjątko w try except try statement 1 statement 2 except (id1, id2, id3, ): action 1 action 2 Instrukcja try działa w następujący sposób. Po pierwsze, wykonywane są wyrażenia pomiędzy try a except. Jeśli nie wystąpią wyjątki, klauzula except jest pomijana i wykonanie instrukcji try jest zakończone. Jeśli wystąpi wyjątek podczas wykonywania klauzuli try, reszta statement jest pomijana. Następnie, jeśli jego typ pasuje do wyjątku po słowie kluczowym except, to akcje są wykonywane, a następnie wykonanie przemieszczane jest poza try. Jeśli pojawi się wyjątek, który nie pasuje do wyjątków wymienionych po except, to wyjątek jest przekazywany do zewnętrznych try, jeśli nie znaleziono obsługi wyjątku, to jest to nieobsługiwany wyjątek i wykonanie programu jest zatrzymuje się z komunikatem unhandled exception. 34
35 try except przykład Wyjątek wywołujemy używając except try: open('/etc/shadow') except IOError, (errno, strerror): print u'wystąpił błąd numer ' + str(errno) + ': ' + strerror Wystąpił błąd Wystąpił błąd numer 13: Permission denied 35
36 try except nowy przykład >>> while True:... try:... x = int(raw_input("please enter a number: "))... break... except ValueError:... print "Oops! That was no valid number. Try again..." 36
37 try except else Gdy nie wystąpi wyjątek else try: open('/etc/shadow') except IOError, (errno, strerror): print u'wystąpił błąd numer ' + str(errno) + ': ' + strerror else: print u'plik /etc/shadow otwarty pomyślnie' Wystąpił błąd Wystąpił błąd numer 13: Permission denied Nie było błędu Plik /etc/shadow otwarty pomyślnie 37
38 try except else finally try: open('/etc/shadow') except IOError, (errno, strerror): print u'wystąpił błąd numer ' + str(errno) + ': ' + strerror else: print u'plik /etc/shadow otwarty pomyślnie' finally: print u'ja wykonam się zawsze' Wystąpił błąd Wystąpił błąd numer 13: Permission denied Ja wykonam się zawsze Nie było błędu Plik /etc/shadow otwarty pomyślnie Ja wykonam się zawsze 38
39 39
40 Kilka wyjątko w jednoczes nie try: open('/etc/shadow') print dict['klucz'] except IOError: print u'błąd otwarcia pliku' except KeyError: print u'błąd dostępu do słownika' else: print u'nie wystąpiły błędy' try: open('/etc/shadow') print dict['klucz'] except (IOError, KeyError): print u'wystąpił błąd' else: print u'nie wystąpiły błędy' 40
41 Kolejny przykład Łapane są również wyjątki nie występujące bezpośrednio w sekcji try ale również te które powstaną w funkcjach wywołanych w sekcji try: >>> def this_fails():... x = 1/0... >>> try:... this_fails()... except ZeroDivisionError as detail:... print 'Handling run-time error:', detail... W przykładzie wykorzystano argument wyjątku detail aby wypisać dodatkowe informacje 41
42 Tworzenie własnego wyjątku Trzeba zdefiniować klasę pochodną od Exception class MojWyjatek(Exception): pass 42
43 Tworzenie własnego wyjątku przykład >>> class MyError(Exception): W tym przykładzie przeciążono konstruktor z... def init (self, value): klasy Exception. Nowy konstruktor tworzy... self.value = value... def str (self): atrybut value eliminując standardowe zachowanie polegające na tworzeniu atrybutu args.... return repr(self.value)... >>> try:... raise MyError(2*2)... except MyError as e:... print 'My exception occurred, value:', e.value... My exception occurred, value: 4 >>> raise MyError('oops!') Traceback (most recent call last): File "<stdin>", line 1, in? main.myerror: 'oops!' 43
44 Obsługa wyjątko w w nowym module class Error(Exception): """Base class for exceptions in this module.""" pass class InputError(Error): """Exception raised for errors in the input. Klasy wyjątków mogą wykonywać dowolne akcje, które mogą wykonywać inne klasy. Zwykle jednak klasy te posiadają proste metody oferując informacje o błędzie. Attributes: expr -- input expression in which the error occurred msg -- explanation of the error """ def init (self, expr, msg): self.expr = expr self.msg = msg class TransitionError(Error): """Raised when an operation attempts a state transition that's not Kiedy tworzymy moduł, w którym może powstać kilka różnych błędów zwykle tworzy się klasę podstawową dla wszystkich wyjątków zdefiniowanych w tym module i klasy pochodne dla każdego nowego typu błędu, który może pojawić się w kodzie modułu. 44
45 allowed. Attributes: prev -- state at beginning of transition next -- attempted new state msg -- explanation of why the specific transition is not allowed """ def init (self, prev, next, msg): self.prev = prev self.next = next self.msg = msg 45
46 Introspekcje Informacje o obiekcie dir(obiekt) Dokumentacja obiektu, metody, funkcji help(obiekt) Sprawdzenie czy posiada atrybut hasattr(obiekt, 'nazwa_atrybutu') Pobranie atrybutu getattr(obiekt, 'nazwa_atrybutu') Sprawdzenie czy obiekt jest typu isinstance(obiekt, typ) 46
47 Introspekcje Sprawdzenie czy obiekt dziedziczy po issubclass(obiekt, podtyp) Sprawdzenie czy obiekt jest wykonywalny callable(obiekt) Lista słów kluczowych keywords Lista obiektów wbudowanych dir( builtins ) Dostęp do docstringów obiekt. doc 47
48 Introspekcje Nazwa obiektu obiekt. name Pobieranie typu obiektu type(obiekt) Sprawdzanie identyczności obiektów obiekt1 is obiekt2 Dostęp do atrybutów obiektu obiekt. dict Lista przodków klasy: klasa. bases 48
49 Introspekcje funkcji def fun(a, b=1, c=2, d=3): pass Nazwa funkcji fun.func_name # fun Dokumentacja funkcji fun.func_doc # '' Domyślne wartości funkcji fun.func_defaults # (1,2,3) Obiekt kodu funkcji fun.func_code # <code object fun at 0x98e8f08, file "<ipython console>", line 1> 49
50 Liczba przyjmowanych argumentów fun.func_code.co_argcount # 4 Liczba zmiennych łącznie z argumentami fun.func_code.co_nlocals # 4 Nazwa pliku w którym znajduje się funkcja Introspekcje funkcji fun.func_code.co_filename # '<ipython console>' Nazwy argumentów i zmiennych lokalnych fun.func_code.co_varnames # ('a', 'b', 'c', 'd') Dane o funkcji 50
51 fun.func_code.co_flags 0x04 czy użyto *args 0x08 czy użyto **kwargs 51
52 Sposób korzystania z kolekcji: for element in kolekcja: print x Implementacja kolekcji Szczegóły wykonania: Na początku wywoływana jest metoda iter. Wartością powinien być obiekt (enumerator) implementujący metodę next() która za każdym wywołaniem zwraca kolejny element kolekcji. Metoda next() jest wywoływana tak długo, póki nie zostanie zgłoszony wyjątek StopIteration 52
53 Implementacja kolekcji zwracającej kolejne liczby od 1 do 10 class ListaLiczb: def iter (self): self.licznik = 0 return self def next(self): if self.licznik >= 10: raise StopIteration self.licznik += 1 return self.licznik 53
54 Implementacja klasy wektorów Vector: operatory arytmetyczne v1 = Vector([1, 0, 0]) v1 = Vector([0, 1, 0]) v3 = v1 + v2 str(vector([0, 0 1])): <0, 0, 1> len(vector([0, 0 1])): 3 Kolejny przykład (Zadanie) 54
55 Implementacja wektora class Vector: def init (self, lista): self.value = lista def add (self, arg): if self. class <> arg. class or len(self.value) <> len(arg.value): return None res = Vector( [x + y for x, y in zip(self.value, arg.value) ]) return res Wykorzystanie: v1 = Vector([1, 0, 3]) v2 = Vector([0, 2, 0]) print v1 + v2 55
56 Konwersja na tekst >>> print Vector([1,2,3]) < main.vector instance at 0xb7eabdec> def str (self): return < +,.join([str(x) for x in self.value]) + > >>> print Vector([1,2,3]) <1, 2, 3> 56
57 Włas ciwos ci kolekcji Pożądane cechy kolekcji Indeksowany dostęp do danych k[4] Obsługa poprzez iteratory for in rozmiar kolekcji len Dostęp indeksowany: def getitem (self, index): return self.value[index] def setitem (self, index, value): self.value[index] = value Zastosowanie: >>> print v1[k] >>> v1[k] = k 57
58 def delitem (self, index): del self.value[index] Usuwanie elemento w za pomocą del Długość kolekcji def len (self): return len(self.value) Implementacja kolekcji strona 55. (Przypomnienie) 58
59 def iter (self): self.indeks = 0 return self Implementacja kolekcji Vector bez generatora def next(self): if self.indeks >= len(self): raise StopIteration self.indeks += 1 return self.value[self.indeks - 1] 59
60 Włas ciwos ci generatora mechanizm leniwej ewaluacji; przypomina działaniem return, ale zwraca iterator, nie wskazywaną wartość; pozwala zwrócić wartość zachowując stan obliczeń w metodzie/funkcji. Zwrócenie iteratora: instrukcja yield def iter (self): return self.nastepniki() def nastepniki(self): i = 0 while i < len(self): yield self[i] i = i
61 Reimplementacja metody add Poprzednia wersja def add (self, arg): if self. class <> arg. class or len(self.value) <> len(arg.value): return None res = Vector( [x + y for x, y in zip(self.value, arg.value) ]) return res Nowa wersja def add (self, arg): if self. class <> arg. class or len(self) <> len(arg): return None return Vector( [x + y for x, y in zip(self, arg) ]) 61
62 Definicja klasy Vector Podsumowanie Można używać operatora + ( add ); indeksowany dostęp do współrzędnych ( getitem, setitem ) iteracje po współrzędnych; len() i str(); ukrycie implementacji. 62
63 Inny przykład yeld Implementacja nieskończonej listy potęg: def power2(): power = 1 while True: yield power power = power * 2 it = power2() for x in range(4): print it.next() Nieskończona pętla for i in power2(): print i 63
64 Dynamiczne wykonanie programu exec "print 2 + 2" exec open("foo.py") print eval(2*2) 64
65 Dynamiczna kompilacja kodu Wbudowana funkcja compile(źródło, typ źródła, typ kodu) zwraca obiekt reprezentujący skompilowany kod. x = 10 code = compile(print x\nprint 2*x, <string>, exec) exec code 65
66 Problem z kontekstem wywołania x = 10 code = compile(print x\nprint 2*x, <string>, exec) wykonaj(code) def wykonaj(kod): exec kod 66
67 Przekazanie kontekstu wywołania x = 10 code = compile(print x\nprint 2*x, <string>, exec) wykonaj(code) def wykonaj(code): loc = { x : 5} exec code in loc 67
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
Zaawansowany kurs języka Python
Wykład 4. 23 października 2015 Plan wykładu 1 2 Pliki tekstowe Trwałość obiektów CSV Strumienie Plan wykładu 1 2 Pliki tekstowe Trwałość obiektów CSV Strumienie Protokół iteracyjny Producent Umiem dostarczać
Ć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
Pisząc kod w Pythonie na pewno już nie raz coś poszło nie tak i Shell wypisał komunikat o błędzie podobny do poniższego:
Wyjątki Pisząc kod w Pythonie na pewno już nie raz coś poszło nie tak i Shell wypisał komunikat o błędzie podobny do poniższego: >>> 1/ File "", line 1, in 1/ ZeroDivisionError: integer
Wyjątki. try - except
Wyjątki Wyjątek jest obiektem Pythona reprezentującym błąd. Innymi słowy, jest on zdarzeniem, które pojawia się podczas wykonania programu przerywając jego normalny przebieg. Wyobraźmy sobie dłuższy fragment
Język Python (3) Język Python (3) 1/35
Język Python (3) Język Python (3) 1/35 Język Python (3) 2/35 Kod samotestujący Tworzenie def t e s t e r ( ) : p r i n t ( "Wywołanie funkcji testujacych..." ) i f n ame == main : t e s t e r ( ) Język
Programowanie obiektowe
Programowanie obiektowe Wyjątki, metody specjalne, generatory Paweł Daniluk Wydział Fizyki Jesień 2015 P. Daniluk (Wydział Fizyki) PO w. VII Jesień 2015 1 / 23 Wyjątki It s easier to ask forgiveness than
Zaawansowany kurs języka Python
Wykład 1. 4 października 2013 Plan wykładu 1 2 3 4 Typy proste Kolekcje Instrukcje w języku (przypomnienie) Wykładowca: Termin wykładu: piątek, 10:15 12:00, sala 119 Strona wykładu http://www.ii.uni.wroc.pl/
Programowanie obiektowe
Programowanie obiektowe Język programowania Ruby Marcin Młotkowski 12 kwietnia 2018 Plan wykładu 1 Wstęp 2 Typy numeryczne Łańcuchy znaków (klasa String) Przedziały Tablice i tablice asocjacyjne Nazwy
Kurs rozszerzony języka Python
Wykład 1. 6 października 2017 Plan wykładu 1 2 3 4 Plan wykładu 1 2 3 4 Wykładowca: Termin wykładu: piątek, 10:15 12:00, sala 119 Strona wykładu http://www.ii.uni.wroc.pl/ marcinm/dyd/python Materiały
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
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
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)
Zaawansowany kurs języka Python
Wykład 2. 11 października 2013 Plan wykładu 1 Klasy i obiekty 2 3 4 Deklaracja klasy Przykłady class Figura: Pierwsza klasa def init (self, x, y): self.x = x self.y = y Definicja metody class Figura, cd.
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
Podstawy programowania w Pythonie
Podstawy programowania w Pythonie Wykład 6 dr Andrzej Zbrzezny Instytut Matematyki i Informatyki Akademia Jana Długosza w Częstochowie 21 listopada 2012 dr Andrzej Zbrzezny (IMI AJD) Podstawy programowania
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
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
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ć
Język Python. Język Python 1/35
Język Python Język Python 1/35 Język Python 2/35 Wstęp Uruchamianie interpretera python Skrypty wykonywalne #!/usr/bin/python #!/usr/bin/env python lub #!/usr/bin/python3 #!/usr/bin/env python3 chmod +x
Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].
ABAP/4 Instrukcja IF Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek]. [ELSEIF warunek. ] [ELSE. ] ENDIF. gdzie: warunek dowolne wyrażenie logiczne o wartości
JĘZYK PYTHON - NARZĘDZIE DLA KAŻDEGO NAUKOWCA. Marcin Lewandowski [ ]
JĘZYK PYTHON - NARZĘDZIE DLA KAŻDEGO NAUKOWCA Marcin Lewandowski [ mlew@ippt.gov.pl ] PROGRAMOWANIE FUNKCYJNE I OBIEKTOWE W PYTHONIE 2 PROGRAMOWANIE FUNKCYJNE 3 Źródła Programowanie funkcyjne (wykład MIMUW)
Środowisko programisty
Środowisko programisty 1/35 Środowisko programisty Język Python cz. 3 dr inż. Grzegorz Michalski 7 kwietnia 2014 Środowisko programisty 2/35 Kod samotestujący Tworzenie def t e s t e r ( ) : p r i n t
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:
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
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
Python. Wprowadzenie. Jolanta Bachan
Python Wprowadzenie Jolanta Bachan Zainstaluj i przetestuj Pythona https://www.python.org/downloads/ print 'Hello world!' operatory numeryczne: + - * / // % ** operatory porównania: ==!= > < >=
Delphi Laboratorium 3
Delphi Laboratorium 3 1. Procedury i funkcje Funkcja jest to wydzielony blok kodu, który wykonuje określoną czynność i zwraca wynik. Procedura jest to wydzielony blok kodu, który wykonuje określoną czynność,
Szablony klas, zastosowanie szablonów w programach
Szablony klas, zastosowanie szablonów w programach 1. Szablony klas i funkcji 2. Szablon klasy obsługującej uniwersalną tablicę wskaźników 3. Zastosowanie metody zwracającej przez return referencję do
Typy danych, cd. Łańcuchy znaków
Typy danych, cd. Łańcuchy znaków Typ danych string, jest rozumiany jako łańcuch znaków - liter, cyfr i symboli. Stringi definiuje się w podwójnych lub pojedyńczych cudzysłowach. typ_ kawy = " latte " typ_herbaty
Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA
Python wprowadzenie Warszawa, 24 marca 2017 Python to język: nowoczesny łatwy w użyciu silny można pisać aplikacje Obiektowy klejący może być zintegrowany z innymi językami np. C, C++, Java działający
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
Java: kilka brakujących szczegółów i uniwersalna nadklasa Object
Java: kilka brakujących szczegółów i uniwersalna nadklasa Object Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU Konstrukcja obiektów Niszczenie obiektów i zwalnianie zasobów
Programowanie obiektowe
Programowanie obiektowe Wykład 2 Marcin Młotkowski 4 marca 2015 Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie obiektowe 2 / 47 Krótki opis C Obiektowy, z kontrolą typów; automatyczne odśmiecanie;
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
Wstęp do programowania
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
Podstawy Programowania ELEMENTY PROGRAMU i TYPY DANYCH
Podstawy Programowania ELEMENTY PROGRAMU i TYPY DANYCH Michał Bujacz bujaczm@p.lodz.pl B9 Lodex 207 godziny przyjęć: środy i czwartki 10:00-11:00 http://www.eletel.p.lodz.pl/bujacz/ 1 Pytania weryfikacyjne:
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,
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
Programowanie Obiektowe Ćwiczenie 4
Programowanie Obiektowe Ćwiczenie 4 1. Zakres ćwiczenia wyjątki kompozycja 2. Zagadnienia Założeniem, od którego nie należy odbiegać, jest by każdy napotkany problem (np. zatrzymanie wykonywanej metody)
KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany
KLASA UCZEN Napisz deklarację klasy Uczen, w której przechowujemy następujące informacje o uczniu: imię, nazwisko, średnia (pola prywatne), poza tym klasa zawiera metody: konstruktor bezparametrowy (nie
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,
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
Zaawansowany kurs języka Python
Wykład 6. 6 listopada 2015 Plan wykładu Callable objects 1 Callable objects 2 3 Plan wykładu Callable objects 1 Callable objects 2 3 Callable objects Wszystko jest obiektem. Callable objects Wszystko jest
Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków
Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków mgr inż. Maciej Lasota Version 1.0, 13-05-2017 Spis treści Wyjątki....................................................................................
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ść
Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)
MAS dr. Inż. Mariusz Trzaska Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1) Zagadnienia o Podstawy o Kontrolowanie sterowania o Klasy o Interfejsy o Obsługa błędów o Pojemniki o System
Algorytmy i struktury danych
Algorytmy i struktury danych 3. Elementy programu i typy danych Łódź 2018 Ćwiczenie Body Mass Index - Edytuj kod programu - Zapisz go w pliku bmi.py - Uruchom skrypt >>> Enter your name: Jacek >>> Enter
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
Podstawy. Jan Koprowski <jan.koprowski@gmail.com> Politechnika Gdańska, FTiMS Informatyka Stosowana
Podstawy 1 Plan prezentacji Garść informacji Komentarze Stringi Wbudowane typy liczbowe Konstrukcja print Pobieranie danych Konstrukcja if Konstrukcja if else Konstrukcja if elif else Pętla while Pętla
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/
Dawid Gierszewski Adam Hanasko
Dawid Gierszewski Adam Hanasko Chcemy stworzyć klasę w której możemy przechowywać dwie zmienne dowolnych typów Tworzymy tyle różnych klas ile potrzeba: Class ParaInt{ int pierwszy; Int drugi; Class ParaButow{
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
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
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ą
Programowanie Obiektowe i C++
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
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
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ć,
rozdział 4: ZMIENNE I INSTRUKCJE
rozdział 4: ZMIENNE I INSTRUKCJE ostatnia modyfikacja: 04.12.18 definicja: zmienna to nazwany kontener służący do przechowywania danych na razie skupimy się na zmiennych przechowujących dane liczbowe i
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 -
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
Przegląd języka Python. Łukasz Anwajler
Przegląd języka Python Łukasz Anwajler lukasz.anwajler@pjwstk.edu.pl Nie wierzcie mi na słowo Zaraz zobaczymy: czym jest Python dlaczego warto go używać jakie ma zastosowania gdzie z niego korzystają jakzacząć
Typy metod: konstruktory, destruktory, selektory, zapytania, iteratory.
Typy metod: konstruktory, destruktory, selektory, zapytania, iteratory. Konstruktory Konstruktory w językach obiektowych są to specjalne metody wywoływane podczas tworzenia nowego obiektu i służące do
Podstawy programowania w Pythonie
Podstawy programowania w Pythonie Wykład 2 dr Andrzej Zbrzezny Instytut Matematyki i Informatyki Akademia Jana Długosza w Częstochowie 10 października 2012 dr Andrzej Zbrzezny (IMI AJD) Podstawy programowania
Programowanie i projektowanie obiektowe
Programowanie i projektowanie obiektowe Metody i dziedziczenie Paweł Daniluk Wydział Fizyki Jesień 2015 P. Daniluk (Wydział Fizyki) PO w. V Jesień 2015 1 / 31 Metody Przypomnienie Obiekty odpowiadają za
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
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
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
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
Środowisko programisty
Środowisko programisty 1/34 Środowisko programisty Język Python cz. 1 dr inż. Grzegorz Michalski 24 marca 2014 Środowisko programisty 2/34 Wstęp Uruchamianie interpretera python Wykonywalne skrypty #!/usr/bin/python
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
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
2. Składnia Pythona. Robert Janczewski. Gdańsk, 2014
Gdańsk, 2014 Czym jest Python? Python a C Struktura programu Zmienne i zarządzanie pamięcią Przykład Python to język programowania, który został zaprojektowany tak, by można było szybko tworzyć czytelne
Wykład 2 Składnia języka C# (cz. 1)
Wizualne systemy programowania Wykład 2 Składnia języka C# (cz. 1) 1 dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD Wizualne systemy programowania Budowa projektu 2 Struktura programu
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
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
Programowanie obiektowe
Wykład 4 Piotr Błaszyński Wydział Inmatyki Zachodniopomorskiego Uniwersytetu Technologicznego 16 lutego 2018 i zawieranie się, gromadzenie elementów nowa klasa powstaje przez użycie obiektów klas już istniejących,
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
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
Programowanie obiektowe
Wykład 2 28 lutego 2019 Plan wykładu 1 2 3 4 5 Plan wykładu 1 2 3 4 5 Krótki opis C Obiektowy, z kontrolą typów; automatyczne odśmiecanie; standardy ISO i ECMA; podobny składniowo do C++; Język C Krótka
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
Podstawy bioinformatyki 2017/18
JEZYK PROGRAMOWANIA PYTHON: SEKWENCJE (ŁAŃCUCHY, LISTY, KROTKI), METODY LIST E. Dyguda-Kazimierowicz 1 Sekwencje: indeksowanie i wycinanie Poznane dotąd obiekty łańcuchowe należą do typu danych złożonych
Podstawy i języki programowania
Podstawy i języki programowania Laboratorium 8 - wprowadzenie do obsługi plików tekstowych i wyjątków mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 11 grudnia 2017 1 / 34 mgr inż. Krzysztof
Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna
Język JAVA podstawy Wykład 3, część 3 1 Język JAVA podstawy Plan wykładu: 1. Konstrukcja kodu programów w Javie 2. Identyfikatory, zmienne 3. Typy danych 4. Operatory, instrukcje sterujące instrukcja warunkowe,
Programowanie w Sieci Internet. Python: Operacje z plikami oraz obsługa wyjątków
Programowanie w Sieci Internet Python: Operacje z plikami oraz obsługa wyjątków Kraków, 5 grudnia 2014 r. mgr Piotr Rytko Wydział Matematyki i Informatyki Otwieranie plików Otwieranie plików jest realizowane
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
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
Języki i metody programowania
Języki i metody programowania Wykład 4 dr hab. Bożena Woźna-Szcześniak bwozna@gmail.com Instytut Matematyki i Informatyki Akademia Jana Długosza w Częstochowie hab. Andrzeja Zbrzezngo Podstawy języka Python
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
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
Python wstęp. Michał Bereta www.michalbereta.pl
Python wstęp Michał Bereta www.michalbereta.pl Wprowadzenie... 1 Źródła wiedzy... 1 Uruchomienie interpretera Pythona... 2 Python jako kalkulator użycie interaktyne... 2 Uruchamianie skryptów z plików...
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
Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)
Uwagi dotyczące notacji kodu! Wyrazy drukiem prostym -- słowami języka VBA. Wyrazy drukiem pochyłym -- inne fragmenty kodu. Wyrazy w [nawiasach kwadratowych] opcjonalne fragmenty kodu (mogą być, ale nie
Zaawansowane programowanie w języku C++ Klasy w C++
Zaawansowane programowanie w języku C++ Klasy w C++ Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka bez ograniczeń
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.
1 Kursory 1. 2 Wyjątki Wyjątki predefiniowane Wyjątki niezdefiniowane wcześniej Definiowanie własnych wyjątków...
Plan wykładu Spis treści 1 Kursory 1 2 Wyjątki 4 2.1 Wyjątki predefiniowane............................. 4 2.2 Wyjątki niezdefiniowane wcześniej....................... 5 2.3 Definiowanie własnych wyjątków........................
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
Kurs języka Python. Wykład 11. Marcin Młotkowski. 4 stycznia Kontrola poprawności podczas biegu programu. 2 Testowanie oprogramowania
Wykład 11. 4 stycznia 2010 1 Kontrola poprawności podczas biegu programu 2 3 4 Asercje Asercja to formuła logiczna; Asercji używa się do kontrolowania czy np. wartość zmiennej ma odpowiedni typ lub mieści
Języki i metody programowania Java. Wykład 2 (część 2)
Języki i metody programowania Java INF302W Wykład 2 (część 2) Autor Dr inż. Zofia Kruczkiewicz 1 Struktura wykładu 1. Identyfikacja danych reprezentowanych przez klasy podczas opracowania koncepcji prostego
Właściwości i metody obiektu Comment Właściwości
Właściwości i metody obiektu Comment Właściwości Właściwość Czy można zmieniać Opis Application nie Zwraca nazwę aplikacji, która utworzyła komentarz Author nie Zwraca nazwę osoby, która utworzyła komentarz