Как писать ооп программы

Кроме использования встроенных типов, таких как int, double и т.д., мы можем определять свои собственные типы или классы . Класс представляет составной тип, который может использовать другие типы.

Класс предназначен для описания некоторого типа объектов. То есть по сути класс является планом объекта. А объект представляет конкретное воплощение класса, его реализацию. Можно еще провести следующую аналогию. У нас у всех есть некоторое представление о человеке, у которого есть имя, возраст, какие-то другие характеристики.

То есть некоторый шаблон — этот шаблон можно назвать классом. Конкретное воплощение этого шаблона может отличаться, например, одни люди имеют одно имя, другие — другое имя. И реально существующий человек будет представлять объект или экземпляр этого класса.

Для определения класса применяется ключевое слово class , после которого идет имя класса:

class имя_класса < // компоненты класса >;

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

Например, определим простейший класс:

class Person < >; int main()

В данном случае класс называется Person. Как правило, названия классов начинаются с большой буквы. Допустим, данные класс представляет человека. Данный класс пуст, не содержит никаких компонентов, тем не менее он уже представляет новый тип. И после определения класса мы можем определять его переменные или константы:

class Person < >; int main()

Но данный класс мало что делает. Класс может определять переменные и константы для хранения состояния объекта и функции для определения поведения объекта. Поэтому добавим в класс Person некоторое состояние и поведение:

#include class Person < public: std::string name; unsigned age; void print() < std::cout >; int main() < Person person; // устанавливаем значения полей класса person.name = «Tom»; person.age = 38; // вызываем функцию класса person.print(); >

Теперь класс Person имеет две переменных name и age, которые предназначены для хранения имени и возраста человека соответственно. Переменные класса еще называют полями класса. Также класс определяет функцию print, которая выводит значения переменных класса на консоль. Также стоит обратить внимание на модификатор доступа public: , который указывает, что идущие после него переменные и функции будут доступны извне, из внешнего кода.

Затем в функции main создается один объект класса Person. Через точку мы можем обратиться к его переменным и функциям.

объект.компонент

Например, мы можем установить значения полей класса

person.name = «Tom»; person.age = 38;

Ну и также мы можем вызывать функции у объекта:

person.print();

Консольный вывод данной программы:

Name: Tom Age: 38

Подобным образом можно получать значения переменных объектов

#include class Person < public: std::string name; unsigned age; void print() < std::cout >; int main() < Person person; // устанавливаем значения полей класса person.name = «Bob»; person.age = 42; // получаем значения полей std::string username = person.name; unsigned userage = person.age; // выводим полученные данные на консоль std::cout

Читайте также:
Пример программы развития туризма

Также можно поля класса, как и обычные переменные, инициализировать некоторыми начальными значениями:

#include class Person < public: std::string name; unsigned age; void print() < std::cout >; int main() < Person person; person.print(); // Name: Undefined Age: 18 >

Указатели на объекты классов

На объекты классов, как и на объекты других типов, можно определять указатели. Затем через указатель можно обращаться к членам класса — переменным и методам. Однако если при обращении через обычную переменную используется символ точка, то для обращения к членам класса через указатель применяется стрелка (->):

#include class Person < public: std::string name; unsigned age; void print() < std::cout >; int main() < Person person; Person *ptr = &person; // обращаемся к полям и функции объекта через указатель ptr->name = «Tom»; ptr->age = 22; ptr->print(); // обращаемся к полям объекта std::cout

Изменения по указателю ptr в данном случае приведут к изменениям объекта person.

Источник: metanit.com

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

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

Представьте сценарий, где вам нужно разработать болид Формулы-1 используя подход объектно-ориентированного программирования. Первое, что вам нужно сделать — это определить реальные объекты в настоящей гонке Формула-1. Какие аспекты в Формуле-1 обладают определенными характеристиками и могут выполнять ту или иную функцию?

Есть вопросы по Python?

На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!

Telegram Чат

  • марка;
  • модель;
  • производитель, и т. д.
  • Почему нужно понимать ООП Python и как это упрощает разработку

    Объектно ориентированное программирование в Python за 10 минут!

    Соответственно, болид можно запустить, остановить, ускорить, и так далее. Гонщик может быть еще одним объектом в Формуле-1. Гонщик имеет национальность, возраст, пол, и так далее, кроме этого, он обладает таким функционалом, как управление болидом, рулевое управление, переключение передач.

    Как и в этом примере, в объектно-ориентированном программировании мы создадим объекты, которые будут соответствовать реальным аспектам.

    Стоит обратить внимание на то, что объектно-ориентированное программирование — не зависящая от языка программирования концепция. Это общая концепция программирования и большинство современных языков, такие как Java, C#, C++ и Python поддерживают объектно-ориентированное программирование.

    В этой статье мы разберем подробную инструкцию объектно-ориентированного программирования в Python, но перед этим, рассмотрим некоторые преимущества и недостатки объектно-ориентированного программирования.

    Читайте также:
    Инструкция по заполнению программы НДС налогоплательщик

    Преимущества и недостатки ООП Python

    Рассмотрим несколько основных преимуществ объектно-ориентированного программирования:

    1. Объектно-ориентированное программирование подразумевает повторное использование. Компьютерная программа написанная в форме объектов и классов может быть использована снова в других проектах без повторения кода;
    2. Использование модулярного подхода в объектно-ориентированном программировании позволяет получить читаемый и гибкий код;
    3. В объектно-ориентированном программировании каждый класс имеет определенную задачу. Если ошибка возникнет в одной части кода, вы можете исправить ее локально, без необходимости вмешиваться в другие части кода;
    4. Инкапсуляция данных (которую мы рассмотрим дальше в статье) вносит дополнительный уровень безопасности в разрабатываемую программу с использованием объектно-ориентированного подхода;

    Хотя объектно-ориентированное программирование обладает рядом преимуществ, оно также содержит определенные недостатки, некоторые из них находятся в списке ниже:

    1. Для создания объектов необходимо иметь подробное представление о разрабатываемом программном обеспечении;
    2. Не каждый аспект программного обеспечения является лучшим решением для реализации в качестве объекта. Для новичков может быть тяжело прочертить линию в золотой середине;
    3. С тем, как вы вносите все новые и новые классы в код, размер и сложность программы растет в геометрической прогрессии;

    В следующем разделе мы рассмотрим ряд самых важных концепций объектно-ориентированного программирования.

    Как и следует из названия, объектно-ориентированное программирование — это речь об объектах. Однако, перед тем как создать объект, нам нужно определить его класс.

    Класс

    Класс в объектно-ориентированном программировании выступает в роли чертежа для объекта. Класс можно рассматривать как карту дома. Вы можете понять, как выглядит дом, просто взглянув на его карту.

    Cам по себе класс не представляет ничего. К примеру, нельзя сказать что карта является домом, она только объясняет как настоящий дом должен выглядеть.

    Отношение между классом и объектом можно представить более наглядно, взглянув на отношение между машиной и Audi. Да, Audi – это машина. Однако, нет такой вещи, как просто машина. Машина — это абстрактная концепция, которую также реализуют в Toyota, Honda, Ferrari, и других компаниях.

    Ключевое слово class используется для создания класса в Python. Название класса следует за ключом class , за которым следует двоеточие. Тело класса начинается с новой строки, с отступом на одну вкладку влево.

    Давайте рассмотрим, как мы можем создать самый простой класс в Python. Взглянем на следующий код:

    Источник: python-scripts.com

    ООП в примерах. Часть 1

    Недавно я пообещал написать что-нибудь про ООП. Честно сказать, тема довольно щекотливая, новичку без пяти капель не разобраться. Я не знал, с чего начать, поэтому решил просто начать, а дальше уже, по отзывам, буду решать в какую сторону делать упор.

    Итак, я не буду сразу парить вас нудной информацией о том, что такое ООП, где оно используется, зачем и т.д. Сразу открываем среду разработки и пишем код!!

    Читайте также:
    Какие программы отключить для быстродействия

    Пишем меню на Canvas.

    Вариант 1. Меню без ООП.
    NonOopMenu.java
    Как видно, мы определили массив строк items для пунктов меню и числовое значение cursor для текущего выделенного элемента. При выборе пункта меню мы просто выводим Alert с текстом этого пункта, всё просто.
    — Ну и норм, без ООП справились, — подумаете вы.
    — Хорошо, а если нам надо добавить к этому меню иконки?
    — Да не вопрос, private Image[] icons;
    — А если ещё и цвет каждому элементу разный надо?
    — Пфф, private int[] itemColors; и пошел.
    — А если при выборе элемента надо различный код вызывать?
    — Не, ну пристал:

    switch ( cursor ) {
    case 0 : // код для первого пункта
    case 1 : // код для второго пункта
    // и так далее.

    Стоп! Понятное дело, что дальше наше меню превращается в какой-то страшный агрегат с кучей полей, массивов и здоровенным набором case в switch.
    Хватит это терпеть, используем ООП!

    Вариант 2. Меню с ООП.
    Когда в действие вступает ООП, нам приходится мыслить несколько иначе. Если раньше мы оперировали методами и переменными с массивами, то теперь в лексикон войдут слова: сущность, абстракция, класс, иерархия, интерфейс, наследование и другие пошлые философские термины. Но главное отличие, нам нужно будет думать так, как будто мы далеки от программирования.

    Перевоплотимся на миг в рыженькую девушку Настю, филолог, 19 лет, оторвёмся от вконтактика и посмотрим на наш салатовый экранчик с менюшкой на английском.
    Итак, перед нами экран с пунктами меню .
    Вы не поверите, но мы только что выделили основные сущности : экран (наш Canvas) и пункты меню. Этот процесс называется абстрагированием .

    Открыть спойлер
    Закрыть спойлер

    Если кто не хочет пока что писать код, а хочет побыть в роли рыженькой девушки Насти, то давайте ещё попрактикуемся в абстрагировании.
    Допустим нам нужно описать мобилу в виде классов.
    Итак, перед нами мой любимый розовый смартфончик. Тут я вижу экран , кнопочки , камеру , какой-то непонятный кругляшок, противная заданяя панель , о которую я сломала ноготь, когда батарею пыталась вытащить. Ну вроде всё.
    Теперь опишем дерево:
    О, дерево. Тут ветки и листочки . Всё. Ой, стойте, ствол , как я про ствол-то забыть могла? Вот теперь точно всё.
    Машину описывать мы не будем, потому что Настя не очень в этом разбирается.
    И вообще, пожалеем нашу девочку, она хочет спать.
    Напомню, мы только что занимались абстрагированием, чтобы отобрать сущности в том виде, в каком они есть на самом деле. Из сущностей получаются классы (хотя не всегда). Класс Canvas у нас и так уже есть, поэтому давайте создадим класс для одного пункта меню. Хранить пока будем только название.

    Источник: annimon.com

    Рейтинг
    ( Пока оценок нет )
    Загрузка ...
    EFT-Soft.ru