- •Тематическая структура апим
- •1.2.Свойства информации.
- •Понятие количества информации
- •3.1.Системы счисления.
- •3.3.3. Преобразования чисел из двоичной в восьмеричную, шестнадцатеричную системы счисления и обратно.
- •3.4.6.Двоичное вычитание с использованием дополнительных кодов.
- •3.6.Логические операции.
- •3.6.2.Логическое умножение (конъюнкция или логическое и)
- •3.6.3.Логическое сложение (дизъюнкция или логическое или)
- •Часть II. Программное обеспечение (по, software).
- •7.2.2.Атрибуты шрифта, абзаца и страницы.
- •Точка. Этот объект на плоскости представляется двумя числами (х, у), указывающими его положение относительно начала координат.
- •Отрезок прямой. Он отличается тем, что требует для своего описания еще двух параметров — координат х1 и х2 начала и конца отрезка.
- •8.5.Фрактальная графика.
- •8.8.1.Цветовая модель rgb.
- •8.8.2.Цветовая модель cmyk.
- •8.8.3.Цветовая модель hsb.
- •8.8.4.Цветовая модель cie Lab.
- •8.9.2.3.Векторные графические редакторы.
- •9.2.3.Атрибуты ячеек, шрифта и страницы. Типы и формат данных в ячейках.
- •10.3.Типы баз данных.
- •10.4.Основные понятия реляционных бд.
- •10.8.Поиск записей. Понятие о запросе. Виды запросов и способы их организации.
- •11.3.Средства создания мультимедиа документов (обзор).
- •12.1.Компьютерные сети.
- •12.2.Топология сети.
- •12.3.Архитектура сети.
- •12.5.3.Адресация в Internet.
- •12.6.Основы технологии www.
- •12.6.1.Архитектура распределенной Web-системы.
- •6.12.2.Структурное программирование.
- •История
- •Главные понятия и разновидности
- •Основные понятия
- •Определение ооп и его основные концепции Сложности определения
- •Определение ооп
- •Концепции
- •Особенности реализации
- •Подходы к проектированию программ в целом
- •Критика ооп
- •Объектно-ориентированные языки
История
Объектное и объектно-ориентированное программирование (ООП) возникло в результате развития идеологии процедурного программирования, где данные и подпрограммы (процедуры, функции) их обработки формально не связаны. Кроме того, в современном объектно-ориентированном программировании часто большое значение имеют понятия события (так называемое событийно-ориентированное программирование) и компонента (компонентное программирование).
Первым языком программирования, в котором были предложены принципы объектной ориентированности, была Симула. В момент своего появления (в 1967 году), этот язык программирования предложил поистине революционные идеи: объекты, классы, виртуальные методы и др., однако это всё не было воспринято современниками как нечто грандиозное. Тем не менее, большинство концепций были развиты Аланом Кэйем и Дэном Ингаллсом в языке Smalltalk. Именно он стал первым широко распространённым объектно-ориентированным языком программирования.
В настоящее время количество прикладных языков программирования (список языков), реализующих объектно-ориентированную парадигму, является наибольшим по отношению к другим парадигмам. В области системного программирования до сих пор применяется парадигма процедурного программирования, и общепринятым языком программирования является язык C. Хотя при взаимодействии системного и прикладного уровней операционных систем заметное влияние стали оказывать языки объектно-ориентированного программирования. Например, одной из наиболее распространенных библиотек мультиплатформенного программирования является объектно-ориентированная библиотека Qt, написанная на языке C++.
Главные понятия и разновидности
Структура данных «класс», представляющая собой объектный тип данных, внешне похожа на типы данных процедурно-ориентированных языков, такие как структура в языке Си или запись в Паскале или QuickBasic. При этом элементы такой структуры (члены класса) могут сами быть не только данными, но и методами (то есть процедурами или функциями). Такое объединение называется инкапсуляцией.
Наличие инкапсуляции достаточно для объектности языка программирования, но ещё не означает его объектной ориентированности — для этого требуется наличие наследования.
Но даже наличие инкапсуляции и наследования не делает язык программирования в полной мере объектным с точки зрения ООП. Основные преимущества ООП проявляются только в том случае, когда в языке программирования реализован полиморфизм.
Язык Self, соблюдая многие исходные положения объектно-ориентированного программирования, ввёл альтернативное классам понятие прототипа, положив начало прототипному программированию, считающемуся подвидом объектного.
Основные понятия
Абстракция данных
Объекты представляют собой упрощенное, идеализированное описание реальных сущностей предметной области. Если соответствующие модели адекватны решаемой задаче, то работать с ними оказывается намного удобнее, чем с низкоуровневым описанием всех возможных свойств и реакций объекта.
Инкапсуляция
Инкапсуляция — это принцип, согласно которому любой класс должен рассматриваться как чёрный ящик — пользователь класса должен видеть и использовать только интерфейсную часть класса (т. е. список декларируемых свойств и методов класса) и не вникать в его внутреннюю реализацию. Поэтому данные принято инкапсулировать в классе таким образом, чтобы доступ к ним по чтению или записи осуществлялся не напрямую, а с помощью методов. Принцип инкапсуляции (теоретически) позволяет минимизировать число связей между классами и, соответственно, упростить независимую реализацию и модификацию классов.
Сокрытие данных
Сокрытие данных — неотделимая часть ООП, управляющая областями видимости. Является логическим продолжением инкапсуляции. Целью сокрытия является невозможность для пользователя узнать или испортить внутреннее состояние объекта.
Наследование
Наследованием называется возможность порождать один класс от другого с сохранением всех свойств и методов класса-предка (прародителя, иногда его называют суперклассом) и добавляя, при необходимости, новые свойства и методы. Набор классов, связанных отношением наследования, называют иерархией. Наследование призвано отобразить такое свойство реального мира, как иерархичность.
Полиморфизм
Полиморфизмом называют явление, при котором функции (методу) с одним и тем же именем соответствует разный программный код (полиморфный код) в зависимости от того, объект какого класса используется при вызове данного метода. Полиморфизм обеспечивается тем, что в классе-потомке изменяют реализацию метода класса-предка с обязательным сохранением сигнатуры метода. Это обеспечивает сохранение неизменным интерфейса класса-предка и позволяет осуществить связывание имени метода в коде с разными классами — из объекта какого класса осуществляется вызов, из того класса и берётся метод с данным именем. Такой механизм называется динамическим (или поздним) связыванием — в отличие от статического (раннего) связывания, осуществляемого на этапе компиляции.