diff --git a/lectures/03-oop.slim b/lectures/03-oop.slim index 3bb8a1f..b2f33e8 100644 --- a/lectures/03-oop.slim +++ b/lectures/03-oop.slim @@ -53,7 +53,7 @@ = slide 'Енкапсулация' do blockquote cite='http://en.wikipedia.org/wiki/Encapsulation_(object-oriented_programming)' Encapsulation is the packing of data and functions into a single component. - p Има много механизми, с които можем да го реализираме, но обектно ориентираното програмиране е един от най-популярните + p Има много механизми, с които можем да го реализираме, но обектно-ориентираното програмиране е един от най-популярните = slide 'Information hiding' do blockquote cite='http://stackoverflow.com/a/24748' Abstraction and encapsulation are complementary concepts: abstraction focuses on the observable behavior of an object... encapsulation focuses upon the implementation that gives rise to this behavior... encapsulation is most often achieved through information hiding, which is the process of hiding all of the secrets of object that do not contribute to its essential characteristics. @@ -94,7 +94,7 @@ img.action src='3/mind_blown.gif' = slide 'Класове' do - p Създаваме класове с ключовата дума class, след което всяка функция дефинирана в тялото на класа е метод, а всяка променлива е клас променлива + p Създаваме класове с ключовата дума class, след което всяка функция, дефинирана в тялото на класа, е метод, а всяка променлива е клас променлива = slide 'Примерен клас Vector' do example: @@ -115,7 +115,7 @@ = slide 'Забележки' do p „Конструктор“ е думата, с която сте свикнали, но в случая далеч по-подходяща е „инициализатор“, както си личи от името - p Въпреки, че при инстанциране на обект подаваме аргументите, които очаква инициализаторът, той не е първият метод, който се извиква в този момент, но за сега не влагайте много мисъл в това, просто го имайте предвид + p Въпреки че при инстанциране на обект подаваме аргументите, които очаква инициализаторът, той не е първият метод, който се извиква в този момент, но засега не влагайте много мисъл в това, просто го имайте предвид = slide 'Примерен клас Vector (2)' do example: @@ -157,9 +157,9 @@ p Ограниченията за използване на защитени и частни методи в класовете в python са отговорност на програмиста, което по никакъв начин не прави живота ви по-труден - p Методи/атрибути започващи с _ са защитени, т.е. би следвало да се ползват само от методи на класа и наследяващи го класове + p Методи/атрибути, започващи с _, са защитени, т.е. би следвало да се ползват само от методи на класа и наследяващи го класове - p Методи/атрибути започващи с __ са частни, т.е. би следвало да се ползват само от методи на класа + p Методи/атрибути, започващи с __, са частни, т.е. би следвало да се ползват само от методи на класа p Достатъчно очевидно е, а в някои много редки случаи може да се наложи тези ограничения да не се спазят @@ -185,7 +185,7 @@ li mutable са обекти, които променят вътрешното си състояние във времето li immutable са обекти, които никога не променят вътрешното си състояние - p Най-общо повечето обекти в python са mutable, доколкото езикът не ни забранява да ги променяме + p Най-общо, повечето обекти в python са mutable, доколкото езикът не ни забранява да ги променяме p.action Какво в python знаем, че е immutable? @@ -216,7 +216,7 @@ self.y / length, self.z / length) -= slide 'normalize vs normalized' do += slide 'normalize vs. normalized' do example: class Vector: ... @@ -317,7 +317,7 @@ = slide 'Класови методи' do - p Можете да използвате и @classmethod за да получите класа, от който е извикан методът като първи аргумент + p Можете да използвате и @classmethod, за да получите класа, от който е извикан методът като първи аргумент example: class Countable: _count = 0