💀
Второй курс РПО
Разработка программных модулей
Разработка программных модулей
  • Модели разработки
  • Ошибки и отладка программ
  • Средства разработки алгоритмов
    • Основные принципы и стадии тестирования
  • Сложностные классы
  • Эмуляторы операционных систем
  • Сложность сортировки
  • Уровни тестирования
  • Задание №1
  • Регрессионное тестирование
  • Тестирование «белым ящиком»
  • Как делать оценку сложности?
  • Алгоритмы и сложность
  • Тестирование "белым ящиком" №2
  • Сложность алгоритмов
  • Тестирование "белым ящиком" №3
  • Тестирование "Чёрным ящиком»" №1
  • Тестирование "Черным ящиком" №2
  • Оценка сложности эвристических алгоритмов
  • Принципы ООП
  • Тестирование "Черным ящиком" №3
  • КТ - В3
  • Модульное тестирование
    • С кодами
  • Модульное тестирование
  • Абстрактные классы и интерфейсы в Python
  • Структуры в Python по аналогии с C++
    • Диалоги гениев
  • Делегаты в Python
    • Ещё более не смешные диалоги
  • Регулярные выражения в Python от простого к сложному
  • Python: Коллекции
  • Параметризованные классы (шаблоны)
  • Указатели и операции со списками в Python
  • Интеграционное тестирование
  • Работа с классами. Перегрузка методов
  • Определение операций в классе.
  • Создание наследованных классов
  • Интеграционное тестирование
  • Работа с объектами через интерфейсы
  • Использование стандартных интерфейсов
  • Работа с типом данных "Структура"
  • Коллекции. Параметризованные классы
  • Использование регулярных выражений
  • Операции со списками
  • Что такое паттерны проектирования?
  • Шпаргалка по шаблонам проектирования
    • [Habr] Шпаргалка
  • UML-диаграммы проектирования
  • Использование основных шаблонов.
  • Использование каких то там шаблонов
  • 15-я Практическая
  • 16-я Практическая
  • Graphviz Online
  • 17-я Практическая
  • Введение в теорию программирования: Объектно-ориентированный подход
  • Документирование софта и стандарты
  • C# Ввод и вывод
  • Оптимизация кода: просто о главном
  • Автоматизация разработки технической документации
  • Автоматизированное документирование и первичные данные
  • ADO.NET что это?
Powered by GitBook
On this page
  • 1. Инкапсуляция
  • 2. Наследование
  • 3. Полиморфизм
  • 4. Абстракция
  • Классы: основные понятия
  • Основные понятия:

Принципы ООП

16.12.2024

Объектно-ориентированное программирование (ООП) — это подход к разработке программ, который основывается на концепции объектов. Основные принципы ООП:

1. Инкапсуляция

Инкапсуляция — это механизм, который объединяет данные и методы, работающие с этими данными, в единый объект. Доступ к данным объекта ограничивается через методы (геттеры и сеттеры).

Пример кода:

class Person:
    def __init__(self, name, age):
        self.__name = name  # приватное поле
        self.__age = age    # приватное поле

    def get_name(self):
        return self.__name

    def set_name(self, name):
        self.__name = name

# Создание объекта
person = Person("Иван", 30)
print(person.get_name())  # Иван

2. Наследование

Наследование позволяет одному классу (наследнику) перенимать свойства и методы другого класса (родителя). Это помогает переиспользовать код.

Пример кода:

class Animal:
    def __init__(self, name):
        self.name = name

    def speak(self):
        pass

class Dog(Animal):
    def speak(self):
        return f"{self.name} говорит: Гав!"

# Создание объекта
dog = Dog("Бобик")
print(dog.speak())  # Бобик говорит: Гав!

3. Полиморфизм

Полиморфизм позволяет использовать один интерфейс для разных типов объектов. Это достигается через переопределение методов.

Пример кода:

class Bird:
    def speak(self):
        return "Птица издает звук"

class Parrot(Bird):
    def speak(self):
        return "Попугай говорит: Привет!"

# Пример использования
animals = [Bird(), Parrot()]
for animal in animals:
    print(animal.speak())
# Птица издает звук
# Попугай говорит: Привет!

4. Абстракция

Абстракция скрывает детали реализации и показывает только важные для пользователя аспекты объекта. В Python это реализуется через абстрактные классы.

Пример кода:

from abc import ABC, abstractmethod

class Shape(ABC):
    @abstractmethod
    def area(self):
        pass

class Rectangle(Shape):
    def __init__(self, width, height):
        self.width = width
        self.height = height

    def area(self):
        return self.width * self.height

# Создание объекта
rect = Rectangle(10, 5)
print(rect.area())  # 50

Классы: основные понятия

Класс — это шаблон для создания объектов. Объекты — это экземпляры классов, имеющие свои свойства и методы.

Основные понятия:

  1. Атрибуты — переменные, которые принадлежат классу или объекту.

  2. Методы — функции, которые принадлежат классу или объекту.

  3. Конструктор — метод __init__, который вызывается при создании объекта.

  4. Приватные и публичные атрибуты — с помощью _ и __ можно скрывать данные внутри класса.

Примеры классов:

Пример 1: Базовые методы и атрибуты

class SomeClass(object):
    attr1 = 42

    def method1(self, x):
        return 2 * x

obj = SomeClass()
print(obj.method1(6))  # 12
print(obj.attr1)       # 42

Пример 2: Приватные методы

class SomeClass:
    def _private(self):
        print("Это внутренний метод объекта")

obj = SomeClass()
obj._private()  # Это внутренний метод объекта

Пример 3: Приватные атрибуты

class SomeClass():
    def __init__(self):
        self.__param = 42  # защищенный атрибут

obj = SomeClass()
# print(obj.__param)  # AttributeError: 'SomeClass' object has no attribute '__param'
print(obj._SomeClass__param)  # 42

Пример 4: Наследование классов

class Mammal():
    className = 'Mammal'

class Dog(Mammal):
    species = 'Canis lupus'

dog = Dog()
print(dog.className)  # Mammal

Пример 5: Множественное наследование

class Horse():
    isHorse = True

class Donkey():
    isDonkey = True

class Mule(Horse, Donkey):
    pass

mule = Mule()
print(mule.isHorse)  # True
print(mule.isDonkey) # True

Пример 6: Полиморфизм через переопределение методов

class Mammal:
    def move(self):
        print('Двигается')

class Hare(Mammal):
    def move(self):
        print('Прыгает')

animal = Mammal()
animal.move()  # Двигается

hare = Hare()
hare.move()  # Прыгает
PreviousОценка сложности эвристических алгоритмовNextТестирование "Черным ящиком" №3

Last updated 5 months ago