ООП — это что такое? Основные принципы объектно-ориентированного программирования

Аналогия

Можно представить объекты отделами компании. В большинстве организаций сотрудники не работают один день с кадрами, на следующий начисляя зарплату, а затем неделю занимаясь розничной торговлей. У каждого отдела есть свой персонал с четко возложенными на него обязанностями.

Есть и собственные данные: показатели заработной платы, продаж, учет сотрудников и т. д. Люди в отделах работают со своей информацией. Разделение компании, таким образом, облегчает контроль за ее деятельностью и поддерживает целостность данных. Бухгалтерия отвечает за платежные ведомости.

Если необходимо знать общую сумму заработной платы, выплачиваемой в южном филиале в июле, не нужно рыться в архиве. Достаточно направить записку ответственному лицу, подождать, пока этот человек получит доступ к данным и отправит ответ с требуемой информацией.

Следует помнить, что ориентация на объекты не касается подробностей работы программы. Большинство инструкций C соответствует операторам процедурных языков, таких как С. Действительно, функции-члены в C очень похожи на функции в С. Только более широкий контекст позволит установить, является ли инструкция процедурной или объектно-ориентированной.

Атрибуты

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

Класс

Объекты в ООП – это члены классов. Что это значит? Языки программирования имеют встроенные типы данных. Тип int, т. е. целое число, предопределен в C . Можно объявлять сколько угодно переменных int.

Аналогично определяется множество объектов одного класса. Он определяет функции и данные, включаемые в его объекты, не создавая их, так же как int не создает переменные.

Класс в ООП – это описание ряда похожих объектов. Принц, Стинг и Мадонна являются певцами. Нет ни одного человека с таким именем, но люди могут так называться, если они обладают соответствующими характеристиками. Объект ООП – это экземпляр класса.

Моделирование реального мира

Второй и более важной проблемой процедурной парадигмы является то, что ее расположение отдельных данных и функций плохо моделирует вещи в реальном мире. Здесь мы имеем дело с такими объектами, как люди и автомобили. Они не похожи ни на данные, ни на функции. Сложные реальные объекты обладают атрибутами и поведением.

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

В жизни классы разделены на подклассы. Например, животные делятся на земноводных, млекопитающих, птиц, насекомых и т. д.

Принцип такого рода деления состоит в том, что каждый подкласс имеет общие характеристики с классом, от которого происходит. Все автомобили имеют колеса и двигатель. Это определяющие характеристики транспортных средств. В дополнение к общим характеристикам каждый подкласс обладает своими особенностями. У автобусов много посадочных мест, а грузовики имеют пространство для перевозки тяжелых грузов.

Аналогично базовый класс может стать родителем нескольких производных подклассов, которые могут быть определены так, что они будут разделять его характеристики с добавлением собственных. Наследование подобно функции, упрощающей процедурную программу.

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

Неограниченный доступ

В программе, написанной, например, на C, есть два вида данных. Локальные скрыты внутри функции и другими процедурами не используются.

Когда две и более функций должны получить доступ к одним и тем же данным, то последние должны быть глобальными. Такими, например, являются сведения об учитываемых предметах. Глобальные данные могут быть доступны любой процедуре.

В большой программе есть множество функций и много глобальных элементов. Проблема процедурной парадигмы состоит в том, что это приводит к еще большему числу потенциальных связей между ними.

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

Другие сокращения:  Молодежный сленг из Тик Тока: какие популярные слова пришли к нам из приложения Tik Tok

Например, в программе учета кто-то решит, что код учитываемого предмета должен состоять не из 5 цифр, а из 12. Это потребует изменить тип данных с short на long. Теперь связанные с кодом функции должны быть изменены для работы с новым форматом.

Когда элементы изменяются в большом приложении, трудно сказать, какие процедуры имеют к ним доступ. Но даже если это выяснить, их изменение может привести к неправильной работе с другими глобальными данными. Все связано со всем остальным, поэтому изменение в одном месте аукнется в другом.

Объект в ооп: определение

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

Какие вещи становятся объектами в ООП? Ниже представлены типичные категории.

Физический объект в ООП – это:

  • транспорт в моделях движения потока;
  • электрические элементы в программах схемотехники;
  • страны в модели экономики;
  • самолет в системе управления воздушным движением.

Элементы среды компьютера пользователя:

  • меню;
  • окна;
  • графика (линия, прямоугольник, круг);
  • клавиатура, мышь, принтер, дисковые накопители.

Люди:

  • работники;
  • студенты;
  • клиенты;
  • продавцы.

Данные:

  • книга учета;
  • личное дело;
  • словарь;
  • таблица широт и долгот населенных пунктов.

Связь объектов реального мира и ООП стало результатом сочетания функций и данных: они произвели переворот в программировании. Такого близкого соответствия в процедурных языках нет.

Поведение

Поведение – это то, что объекты реального мира производят в ответ на какое-то воздействие. Если попросить начальство о повышении зарплаты, ответ будет «да» или «нет». Если нажать на тормоз, то автомобиль остановится. Произнесение и остановка являются примерами поведения.

Повторное использование

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

В ООП наследование является расширением идеи многократного использования. Из существующего класса, не изменяя его, можно образовать новый с добавлением других функций. Легкость повторного использования существующего ПО – важное преимущество ООП. Считается, что это обеспечивает рост доходности от первоначальных инвестиций.

Полиморфизм, перегрузка

Операторы = (равно) и (плюс), используемые в позиционной арифметике выше, не действуют так же, как с встроенными типами, такими как int. Объекты position и др. не предопределены, а заданы программным путем. Каким образом эти операторы знают, как с ними обращаться?

Использование операторов или процедур в зависимости от того, с чем они работают, называется полиморфизмом. Когда существующий оператор, такой как или =, получает возможность работать с новым типом данных, говорят, что он перегружен. Перегрузка в ООП – это вид полиморфизма. Она является его важной чертой.

Книга об ООП «Объектно-ориентированное программирование для чайников» позволит всем желающим ознакомиться с данной темой подробнее.

Проблемы структурного программирования

Поскольку приложения становились все более крупными, структурное программирование начало испытывать трудности. Проекты становились слишком сложными. Графики сдвигались. Задействовалось большее число программистов. Сложность росла. Затраты взлетали, график сдвигался дальше, и наступал крах.

Анализ причин этих неудач показал недостатки процедурной парадигмы. Независимо от того, насколько хорошо реализован структурированный подход к программированию, крупные приложения становятся чрезмерно сложными.

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

Если рассматривать эти проблемы в контексте программы учета запасов, то одним из важнейших глобальных элементов данных является совокупность учетных единиц. Разные функции могут обращаться к ним для ввода нового значения, его отображения, изменения и т. д.

Процедура перепланировки в оопп

Основные направления деятельности отдела обследований, перепланировок и переустройств:

— консультация о возможности осуществления перепланировки и(или) переустройства помещения;-выезд на объект с целью проведения обследования технического состояния конструкций жилых/нежилых помещений (во всех без исключения случаях, когда затрагиваются несущие конструкции здания);
— разработка  Технического заключения о техническом состоянии конструкций жилого/нежилого помещения с целью определения возможности производства планируемых работ по переустройству и/или перепланировке;;
— разработка проекта переустройства и/или перепланировки жилого/нежилого помещения;
— проведение авторского надзора за производством работ  в ходе переустройства и/или перепланировки жилого/нежилого помещения (по проектной документации, разработанной ГУП МНИИТЭП);
— разработка Технического заключения о допустимости и безопасности произведенных работ по переустройству и(или) перепланировке помещения;
— рассмотрение представленного проекта переустройства и /или перепланировки жилого/нежилого помещения с подготовкой анализа проектной документации.

Другие сокращения:  с о расшифровка в адресе что это

———————-

Перед обращением в ООПП ГУП МНИИТЭП за разработкой Технического заключения о возможности осуществления перепланировки и (или) переустройства жилого/нежилого помещения (далее – Техническое заключение) необходимо убедиться, что перепланируемые помещения находятся в жилом доме,  построенном по типовому проекту института. Типовые серии жилых домов ГУП МНИИТЭП представлены на сайте в разделе ТИПОВЫЕ СЕРИИ МНИИТЭП И КАТАЛОГИ (ЧАСТЬ А, Б). Данное положение обусловлено нормативным требованием об оформлении Технического заключения проектной организацией – автором проекта дома.

Порядок разработки Технического заключения для жилых помещений имеет ряд отличий и нюансов. Владельцу (пользователю) жилого помещения далее следует рассмотреть варианты типовых проектов перепланировки (Каталог часть А) и варианты типовых решений перепланировки (Каталог часть Б)  для Вашей серии дома.
В случае, если задуманная перепланировка совпадает с вариантами Каталога, то заявителю следует обращаться в Инспекцию по надзору за переустройством помещений в жилых домах административного округа места расположения квартиры /ссылка на полезную информацию  —  МЖИ/.  
Согласование перепланировки в Мосжилинспекции по Каталогу части А носит уведомительный характер.
Разработка Технического заключения и проектной документации для перепланировки по Каталогу части Б происходит путем подачи заявления и необходимого пакета документов в  «одно окно» Мосжилинспекции.

Если планируемая  перепланировка или переустройство жилого помещения не подходит под типовые решения Каталогов, то разработка необходимой документации для индивидуального решения перепланировки происходит на общих основаниях в следующем порядке.

Индивидуальные решения перепланировки жилых помещений и нежилых помещений требуют первоначальной консультации специалистов Отдела обследований, перепланировок и переустройств. Консультации осуществляются по предварительной записи /ссылка на контакты/ на безвозмездной основе и наличии определенного пакета документов  /ссылка на необходимые документы /.

В случае определения на консультации нормативной возможности осуществления задуманной перепланировки следующим этапом является платный выезд на объект перепланировки с целью проведения обследования и определения технической возможности её осуществления.
Далее заключается договор на разработку технического заключения о техническом состоянии конструкций жилого/нежилого помещения с целью определения возможности производства планируемых работ по переустройству и/или перепланировке /ссылка на необходимые документы/, которая производится специалистом ООПП после выезда в предполагаемые к перепланировке помещения. При затрагивании несущих конструкций для проведения обследования заявитель обязан обеспечить доступ в выше- и нижерасположенные помещения по отношению к перепланируемым. Со стороны заявителя требуется проведение ряда подготовительных работ перед обследованием. Процедура проведения обследования несущих конструкций представлена на сайте.
Результатом работы является Техническое заключение о возможности или невозможности производства планируемых работ, которое выдается заявителю.

На основе Технического заключения осуществляется непосредственно разработка проекта переустройства и (или) перепланировки помещений.
Проект переустройства и (или) перепланировки помещений может быть разработан по желанию заявителя также в ГУП МНИИТЭП. Для этого необходимо заключить договор на разработку проектной документации /ссылка на необходимые документы/.

В случае разработки проекта переустройства и (или) перепланировки помещений в ГУП МНИИТЭП со стороны последнего обязательно проведение авторского надзора за производством  работ в ходе переустройства и/или перепланировки помещения и оформление актов на скрытые работы, если таковые работы  предусмотрены проектной документацией. Перечень работ, требующих актов на скрытые работы  представлен на сайте. По заявлению заказчика заключается договор авторского надзора /ссылка на необходимые документы/ с ГУП МНИИТЭП, как автором проекта переустройства и(или) перепланировки (заявителем может быть выбран контроль за производством работ со стороны Мосжилинспекции).

Техническое заключение о допустимости и безопасности ранее произведенных работ по переустройству и (или) перепланировке, согласно действующим нормам оформляется проектной организацией, которая является автором проекта жилого дома.
При обращении заявителя в ГУП МНИИТЭП за оформлением ранее выполненной перепланировки, сначала проводится консультация специалистов ООПП. В зависимости от характера ранее произведенной перепланировки определяется спектр необходимых работ — может потребоваться  проведение обследования технического состояния конструкций здания или разработка конструктивных решений для обеспечения безопасности произведенных ранее работ. В случае если затронуты несущие конструкции здания — осуществляется выезд специалиста ООПП для проведения обследования жилого/нежилого помещения и определения объема работ. По итогам выезда — заключение соответствующего договора /ссылка на перечень необходимых документов/.
Результатом работы в данном случае является Техническое заключение о допустимости и безопасности произведенных ранее работ по переустройству и/или перепланировке.

Также Отдел обследований, перепланировок и переустройств по обращению заявителя может провести независимую оценку проекта переустройства и(или) перепланировки помещений в типовых сериях ГУП МНИИТЭП, разработанного сторонней организацией. На договорной основе /ссылка на необходимые документы/ по результатам проведения экспертизы заявителю представляется Анализ на представленную проектную документацию.

Другие сокращения:  Значение комбинации цифр и букв в гос номерах

———————-
Процедура проведения обследования несущих конструкций
Для обследования квартиры при устройстве проема в несущей стене требуется:
1.    Очистить стену до бетона от обоев или штукатурки по всей длине стены на высоте от пола 40-180 см.
2.    Очистить плиту перекрытия (пол) вдоль всей длины несущей стены.
3.    Вскрыть пол до бетона плит перекрытия в торце стены.
4.    Обеспечить доступ в квартиры, расположенные под и над обследуемой квартирой, с целью обследования стеновых панелей под и над предполагаемым проемом.
(фотографии 1-5)

При разработке проекта перепланировке и (или) переустройства жилых и нежилых помещений ГУП МНИИТЭП и при наличии договора на осуществление авторского надзора с ГУП МНИИТЭП (как разработчиком проектной документации) на определенные виды работ осуществляется оформление Актов освидетельствования скрытых работ.
Перечень актов освидетельствования скрытых работ и актов приемки конструктивных элементов, работ, ответственных конструкций и коммуникаций, предъявляемых комиссиям после завершения переустройства и (или) перепланировки помещений в многоквартирных домах, изложен в приложении № 7 к приложению № 2 к постановлению Правительства Москвы № 508-ПП от 25.10.2022г.

В рамках проведения авторского надзора со стороны ГУП МНИИТЭП Акты освидетельствования скрытых работ требуются на следующие виды работ:

1.    Устройство гидроизоляции ванных, душевных комнат, санитарных узлов (типовое решение гидроизоляции мокрых зон помещений).
2.    Устройство оснований под полы (типовые решения устройства полов помещений).
3.    Усиление металлоконструкциями предполагаемого или выполненного ранее проема в несущих конструкциях помещений (пример проектного решения усиления фотографии).

Выше описанные работы должна выполнять специализированная организация имеющая допуск (Свидетельство выданное саморегулируемой организации) на выполнение данных видов работ, с последующим составлением акта освидетельствования скрытых работ для его подписания авторским надзором при своевременном обеспечении доступа для осмотра выполненных работ и до выполнения других видов работ препятствующих проверке.

Назад в раздел

Процедурные языки

C, Pascal, FORTRAN и подобные языки являются процедурными. То есть каждый их оператор приказывает компьютеру что-то сделать: получить данные, сложить числа, разделить на шесть, отобразить результат. Приложение на процедурном языке представляет собой список инструкций.

Разделение на функции

Когда приложения становятся больше, список получается громоздким. Немногие могут понять более нескольких сотен инструкций, пока они не будут сгруппированы. По этой причине функция стала способом сделать приложения более понятными для своих создателей. В некоторых языках та же концепция может носить название подпрограммы или процедуры.

Приложение разделено на функции, каждая из которых имеет четко определенную цель и интерфейс.

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

Разделение на функции и модули – один из краеугольных камней структурного программирования, которое в течение нескольких десятилетий до появления ООП являлось довлеющей парадигмой.

Решение проблемы

Объект в ООП представляется как совокупность данных и функций. Только процедуры, которые называются функциями-членами в C , позволяют получить его значения. Данные скрыты и защищены от изменения. Значения и функции инкапсулированы в одно целое. Инкапсуляция и упрятывание – основные термины в описании ОО-языков.

Если требуется изменить данные, точно известно, какие функции взаимодействуют с ними. Никакие другие процедуры не могут получить к ним доступ. Это упрощает написание, отладку и поддержание программы.

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

Сегодня наиболее широко используемый язык ООП (объектно-ориентированное программирование) – C (плюс-плюс). В Java отсутствуют некоторые функции, такие как указатели, шаблоны и множественное наследование, что делает его менее мощным и универсальным, чем C . C# еще не достиг популярности C .

Следует отметить, что так называемые функции-члены в C называются методами в некоторых других ОО-языках, таких как Smalltalk. Элементы данных называются атрибутами. Вызов метода объекта является посылкой ему сообщения.

Создание новых типов данных

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

position1 = position origin,

где position1, position и origin – пары независимых численных величин. Создание класса, включающего в себя эти два значения, и объявление переменных его объектами создает новый тип данных.

Оцените статью
Расшифруй.Ру