Объектно – ориентированное программирование (ООП) Артишевская Юлия, 222 группа Артишевская Юлия, 222 группа.

Презентация:



Advertisements
Похожие презентации
Объектно-ориентированное программирование в Python.
Advertisements

EPAM Systemswww.epam.com EPAM Systemswww.epam.com Программирование на языке C# Основы ООП.
ОБЪЕКТНО- ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ (ООП) 1.
С# и ООП Формальное определение класса с C# Класс в C# - это пользовательский тип данных (user defined type), который состоит из данных (часто называемых.
Объектная модель Ruby Денис С. Мигинский. Основные характеристики объектной модели Обязательные: Поддержка классов Поддержка описания поведения класса.
Методология объектно- ориентированного программирования.
Алгоритмический подход – главное алгоритм решения задачи ( в основном, используется для вычислительных задач ); Структурное программирование – декомпозиция,
Основы информатики Классы Заикин Олег Сергеевич zaikin.all24.org
Учебный курс Объектно-ориентированный анализ и программирование Лекция 7 Методы как средство реализации операций Лекции читает кандидат технических наук.
Перегрузка операторов x = a + b результат 1-й операнд2-й операнд оператор По количеству операндов операторы делятся на: унарные (один операнд) бинарные.
OOП Инна Исаева. Подпрограмма – это большая программа, разделённая на меньшие части. В программе одна из подпрограмм является главной. Её задача состоит.
Delphi. 11 класс.. Познакомиться с понятиями : Инкапсуляция Интерфейс объекта Классы, экземпляр класса Наследование, иерархия полиморфизм.
Прикладное программирование кафедра прикладной и компьютерной оптики Абстрактные типы данных.
Лекция 3. Введение в C++ Примеры взяты из книги Брюса Эккеля Думаем на С++
1 Java 1. ВВЕДЕНИЕ В КЛАССЫ И ОБЪЕКТЫ. 2 ООП Базовый способ борьбы со сложностью программных продуктов. Методология программирования, основанная на представлении.
Объектно-ориентированное программирование Объектно-ориентированное программирование (ООП) - основная методология программирования. Она является продуктом.
Делегаты Как созданные объекты могут посылать сообщения тем объектам, которые их породили? При программировании под Windows на С и C++ основное средство.
АССОЦИАТИВНЫЕ КОЛЛЕКЦИИ Лекция 6 1. Отличие от последовательных 2 В последовательной коллекции каждый элемент ассоциируется с номером, начиная с 0. В.
В. Дихтяр ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ (для бакалавров) Российский университет дружбы народов Институт гостиничного бизнеса и туризма Раздел 1.Разработка.
Объектно-ориентированное программирование. Объекты: свойства и методы Основной единицей в объектно- ориентированном программировании является программный.
Транксрипт:

Объектно – ориентированное программирование (ООП) Артишевская Юлия, 222 группа Артишевская Юлия, 222 группа

Объектно-ориентированное программирование

Класс – пользовательский тип, описывающий устройство объекта. Объект «душа», сущность класса. Объект – «душа», сущность класса. ООП

Принципы ООП (Алан Кэй): все данные представляются объектами программа - набор взаимодействующих объектов, посылающих друг другу сообщения каждый объект имеет собственную часть памяти каждый объект имеет свой тип (класс) объекты одного типа могут принимать одни и те же сообщения

Механизмы ООП (принципы): Наследование Наследование - можно создавать специализированные классы на основе базовых (позволяет избегать написания повторного кода). Инкапсуляция Инкапсуляция - можно скрыть ненужные внутренние подробности работы объекта от окружающего мира (алгоритмы работы с данными хранятся вместе с данными). Композиция Композиция - объект может быть составным и включать в себя другие объекты. Абстракция Абстракция - придание объекту характеристик, которые отличают его от всех других объектов, четко определяя его концептуальные границы. Полиморфизм Полиморфизм - в разных объектах одна и та же операция может выполнять различные функции.

1. class 2. def (self [, ]): 3. Классы в Python

Пример класса 1. class Car(object): 2. color = "red" # свойство класса (атрибут) 3. def out(self): # метод класса 4. print (self.color + "!") 5. obj = Car() 6. print obj.color # red 7. obj.out() # red!

Объекты Все базовые типы в Python (число, строка, функция, модуль) - объекты. 1. import math 2. s = "Hello, world!" 3. s.replace('world', 'people')#Hello, people! x = math.sqrt(10.0) 6. print x.as_integer_ratio() 7. #( L, L)

1. class Car(object): 2. color = red 3. __color = green obj = Car() 6. obj.color = yellow # True 7. obj.__color = white # Error Private & Public свойства Все свойства должны быть Private.

1. class Car(object): 2. __speed = 0 3. def get_speed(self): 4. return self.__speed 5. def set_speed(self, speed): 6. assert isinstance(speed, int) 7. self.__speed = min(speed, 200) c = Car() 10. c.set_speed(60) 11. print c.get_speed() # 60 Getters & Setters Если вам надо иметь доступ к свойству, определите для него getter (accessor) и/или setter (mutator).

Достоинство метода: логика локализуется в одном месте. Достоинство метода: логика локализуется в одном месте. Getters & Setters Иначе: 1. class Car(object): 2. speed = 0 3. c = Car() 4. c.speed = min(speed1, 200) 5. # c.speed = min(speed2, 200) 7. #...

__init__ - метод, при создании объекта автоматически создающий ему атрибуты ( __init__ ). Конструктор 1. class Car(object): 2. def __init__(self,w,n=0): 3. self.what = w 4. self.numb = n c1 = Car("Lexus", 15) 7. c2 = Car("Niva") print c1.what,c1.numb # Lexus print c2.what,c2.numb # Niva 0

Параметры без значений по умолчанию указываются первыми, а параметры со значениями по умолчанию после. Конструктор class Car(object): def __init__(self,n=0,w): # ERROR...

1. class Car(object): 2. __speed = def __str__(self): 5. return "Car with speed" + str(self.__speed) 6. c = Car() 7. print c # Car speed 200 Строковое представление Метод __str__ : объекты печатают сами себя Метод __str__ : объекты печатают сами себя

- механизм ООП, позволяющий описать новый класс на основе родительского, т.ч. свойства и функциональность родительского класса заимствуются новым классом. Наследование Принцип : отношение «IS-A» («есть») Пример: «Лимузин есть машина». Если же имеется: «Машина содержит двигатель», то это класс машина содержит свойство двигатель, а не наследуется от него.

1. class DerName (BaseClassName): Наследование

Функция issubclass(X, Y) : является ли класс X подклассом класса Y Функция issubclass(X, Y) : является ли класс X подклассом класса Y Наследование 1. class A(object): pass 2. class B(A): pass issubclass(A, object) #True 5. issubclass(B, A) #True 6. issubclass(B, object) #True 7. issubclass(A, str) #False 8. issubclass (A, A) #True

1. class A(object): pass 2. class B(A): pass 3. print B.__mro__ 4. #(,, ) Наследование

- взаимозаменяемость объектов с одинаковым интерфейсом Полиморфизм 1. a = (1, 2, 3) 2. b = [ ' a ', ' b ', ' c ' ] 3. c = {1 : ' hello ', 2 : ' world ' } 4. ls = [a, b, c] 5. for x in ls: 6. print x[1], 7. # 2 b hello

- возможность использования одного и того же имени операции (метода) к объектам разных классов. Полиморфизм 1. class T1: 2. n=10 3. def total(self,N): 4. self.total = int(self.n) + int(N) 5. class T2: 6. def total(self,s): 7. self.total = len(str(s)) t1 = T1() 10. t2 = T2() 11. t1.total(45) 12. t2.total(45) 13. print t1.total, t2.total # 55 2

«If it looks like a duck and quacks like a duck, it must be a duck.» Duck Typing 1. def f(x): 2. return x.get_value() 3. # можно передавать объект любого типа, лишь бы у него был метод get_value()

1. class Car(object): pass 2. c = Car() print c # print Car # 7. print type(c) # 8. print c.__class__ # print type(Car) # 11. print type(type(c)) # 12. print Car.__class__ # print Car.__bases__ # (,) print type(type(Car)) # 17. print type(Car).__bases__ # (,) Дополнительно

Материалы по теме ООП python_part_6/index.html oriented_programming /