- •Экзаменационный вопрос №1. Основные понятия объектно-ориентированного подхода
- •Экзаменационный вопрос №2. Объектно-ориентированная методология
- •Экзаменационный вопрос №3. Основные понятия объектно-ориентированного анализа
- •Экзаменационный вопрос № 4. Методы объектно-ориентированного анализа
- •Экзаменационный вопрос № 5. Пример объектно-ориентированного анализа
- •Экзаменационный вопрос № 6. Основные понятия объектно-ориентированного проектирования
- •Экзаменационный вопрос № 7. Основные понятия объектно-ориентированного программирования
- •Экзаменационный вопрос № 8. История объе́ктно-ориенти́рованного программи́рования
- •Экзаменационный вопрос № 9. Определение ооп и его основные концепции.
- •Экзаменационный вопрос № 10. Сложности определения ооп
- •Экзаменационный вопрос № 11. Особенности реализации ооп
- •Экзаменационный вопрос № 12. Подходы к проектированию объектно-ориентированных программ
- •Экзаменационный вопрос № 13. Компонентное объектно-ориентированное программирование
- •Экзаменационный вопрос № 14. Прототипное объектно-ориентированное программирование
- •Экзаменационный вопрос № 15. Производительность объектных программ
- •Экзаменационный вопрос № 16. Идентификация объектно-ориентированных языков
- •Экзаменационный вопрос № 17.
- •Экзаменационный вопрос № 18.
- •Экзаменационный вопрос № 19.
- •Экзаменационный вопрос № 20.
- •Экзаменационный вопрос № 21.
- •Экзаменационный вопрос № 22. Основные понятия языка ооп Delphi
- •Экзаменационный вопрос № 23. Основные понятия языка ооп Smalltalk
- •Экзаменационный вопрос № 24. Основные понятия языка ооп Java
- •Список зарезервированных слов Java:
- •Import java.Io.IoException; // подключения библиотеки ioException:
- •Int y,X,z,a,b,c,d;//объявление переменных
- •Экзаменационный вопрос № 25. Основные понятия языка ооп c#
- •Структура программы c#
- •Экзаменационный вопрос № 26 Основные понятия языка ооп Ruby
- •Основные элементы языка Ruby
- •Арифметические Операторы:
- •Структура программы на языке Ruby
- •Экзаменационный вопрос № 27 История создания Action Script
- •Основные элементы языка ActionScript
- •Структура программы на языке ActionScript
- •Экзаменационный вопрос № 28 Основные понятия языка ооп Perl
- •Основные элементы языка
- •Экзаменационный вопрос № 29. Основные понятия языка ооп php
- •Основные элементы языка рнр
- •Структура программы на языке рнр
- •Экзаменационный вопрос № 30. Основные понятия языка ооп Visual Basic
Экзаменационный вопрос № 16. Идентификация объектно-ориентированных языков
Многие современные языки специально созданы для облегчения объектно-ориентированного программирования. Однако следует отметить, что можно применять техники ООП и для не-объектно-ориентированного языка и наоборот, применение объектно-ориентированного языка вовсе не означает, что код автоматически становится объектно-ориентированным.
Современный объектно-ориентированный язык предлагает, как правило, следующий обязательный набор синтаксических средств:
Объявление классов с полями (данными — членами класса) и методами (функциями — членами класса).
Механизм расширения класса (наследования) — порождение нового класса от существующего с автоматическим включением всех особенностей реализации класса-предка в состав класса-потомка. Большинство ООП-языков поддерживают только единичное наследование.
Полиморфные переменные и параметры функций (методов), позволяющие присваивать одной и той же переменной экземпляры различных классов.
Полиморфное поведение экземпляров классов за счёт использования виртуальных методов. В некоторых ООП-языках все методы классов являются виртуальными.
Видимо, минимальным традиционным объектно-ориентированным языком можно считать язык Оберон, который не содержит никаких других объектных средств, кроме вышеперечисленных (в исходном Обероне даже нет отдельного ключевого слова для объявления класса, а также отсутствуют явно описываемые методы, их заменяют поля процедурного типа). Но большинство языков добавляют к указанному минимальному набору те или иные дополнительные средства. В их числе:
Конструкторы, деструкторы, финализаторы.
Свойства (аксессоры).
Индексаторы.
Интерфейсы (например, в Java используются также как альтернатива множественному наследованию — любой класс может реализовать сколько угодно интерфейсов).
Переопределение операторов для классов.
Средства защиты внутренней структуры классов от несанкционированного использования извне. Обычно это модификаторы доступа к полям и методам, типа public, private, обычно также protected, иногда некоторые другие.
Часть языков (иногда называемых «чисто объектными») целиком построена вокруг объектных средств — в них любые данные (возможно, за небольшим числом исключений в виде встроенных скалярных типов данных) являются объектами, любой код — методом какого-либо класса, и невозможно написать программу, в которой не использовались бы объекты. Примеры подобных языков — Smalltalk, Java, C#, Ruby, AS3. Другие языки (иногда используется термин «гибридные») включают ООП-подсистему в исходно процедурный язык. В них существует возможность программировать, не обращаясь к объектным средствам. Классические примеры — C++, Delphi и Perl.
Экзаменационный вопрос № 17.
Общая характеристика языка ООП С++
Язык возник в начале 1980-х годов, когда сотрудник фирмы Bell Laboratories Бьёрн Страуструп придумал ряд усовершенствований к языку C под собственные нужды.
Разрабатывая C с классами (позднее C++), Страуструп также написал программу cfront — транслятор, перерабатывающий исходный код C с классами в исходный код простого C. Новый язык, неожиданно для автора, приобрёл большую популярность среди коллег и вскоре Страуструп уже не мог лично поддерживать его, отвечая на тысячи вопросов.
В 1983 году произошло переименование языка из C с классами в C++. Кроме того, в него были добавлены новые возможности, такие как виртуальные функции, перегрузка функций и операторов, ссылки, константы, пользовательский контроль над управлением свободной памятью, улучшенная проверка типов и новый стиль комментариев (//). Его первый коммерческий выпуск состоялся в октябре 1985 года. В 1985 году вышло также первое издание «Языка программирования C++», обеспечивающее первое описание этого языка, что было чрезвычайно важно из-за отсутствия официального стандарта. В 1989 году состоялся выход C++ версии 2.0. Его новые возможности включали множественное наследование, абстрактные классы, статические функции-члены, функции-константы и защищённые члены.
В 1990 году вышло «Комментированное справочное руководство по C++», положенное впоследствии в основу стандарта. Последние обновления включали шаблоны, исключения, пространства имён, новые способы приведения типов и булевский тип.
Стандартная библиотека C++ также развивалась вместе с ним. Первым добавлением к стандартной библиотеке C++ стали потоки ввода/вывода, обеспечивающие средства для замены традиционных функций C printf и scanf. Позднее самым значительным развитием стандартной библиотеки стало включение в неё Стандартной библиотеки шаблонов.
Никто не обладает правами на язык C++, он является свободным. Однако сам документ стандарта языка (за исключением черновиков) не доступен бесплатно.
Основные элементы языка С++
Комментарии
В С++ есть два типа комментариев. // однострочные комментарии, /*комментарий */ комментарии который может занимать несколько строк.
Типы данных
Символьные: char, wchar_t.
Целочисленные знаковые: signed char, short int, int, long int (и long long int, в стандарте C++).
Целочисленные беззнаковые: unsigned char, unsigned short int, unsigned int, unsigned long int(и unsigned long long int, в стандарте C++).
С плавающей точкой: float, double, long double.
Логический: bool, имеющий значения true и false.
Логические операции
В С++ существует три логические операции:
1) Логическая операция И "&&";
2) Логическая операция ИЛИ "||";
3) Логическая операция НЕ "!" или логическое отрицание.
Присвоение
В С++ существует пять операций присваивания, не считая основную операцию присваивания: «=». Операции присваивания в С++:
1. += операция присваивания-сложения;
2. -= операция присваивания-вычитания;
3. *= операция присваивания-умножения;
4. /= операция присваивания-деления;
5. %= операция присваивания-остатка от деления.
Операторы выбора
В языке программирования С++ существует два оператора выбора:
1) Оператор выбора if
2) Оператор выбора switch
if
Условный оператор или оператор выбора if записывается в двух формах, рассмотрим первую.
if (/*проверяемое условие*/)
{
//тело условного оператора
}
Оператор выбора if else
if (/*проверяемое условие*/)
{
/*тело оператора выбора 1*/;
} else
{
/*тело оператора выбора 2*/;
}
Оператор множественного выбора switch
В С++ еще имеется оператор множественного выбора switch, который мы сейчас детально рассмотрим.
switch (/*переменная или выражение*/)
{
case /*константное выражение1/*:
{
/*группа операторов*/;
break;
}
case /*константное выражение2*/:
{
/*группа операторов*/;
break;
}
//. . .
default:
{/*группа операторов*/;
В языке программирования С++ существуют такие циклы:
цикл for
цикл while
цикл do .. while
// форма записи оператора цикла for:
for (/*выражение1*/; /*выражение2*/; /*выражение3*/ )
{
/*один оператор или блок операторов*/;
}
// форма записи цикла while
while (/*условие продолжения цикла while*/)
{
/*блок операторов*/;
/*управление условием*/;
}
// форма записи оператора цикла do while:
do // начало цикла do while
{
/*блок операторов*/;
}
while (/*условие выполнения цикла*/); //
конец цикла do while
Арифметические операции в C++:
+ сложение;
- вычитание;
* умножение;
/ деление;
% остаток от деления.
Объектно-ориентированные особенности языка
C++ добавляет к C объектно-ориентированные возможности. Он вводит классы, которые обеспечивают три самых важных свойства ООП: инкапсуляцию, наследование и полиморфизм.
В стандарте C++ под классом (class) подразумевается пользовательский тип, объявленный с использованием одного из ключевых слов class, struct или union, под структурой (structure) подразумевается класс, определённый через ключевое слово struct, и под объединением (union) подразумевается класс, определённый через ключевое слово union.
Описание функций в теле класса
В теле класса можно указать только заголовок функции, а можно описать всю функцию (см. пример с функцией Alloc ниже. В этом случае она считается встраиваемой (inline))
Константные функции-члены
Нестатические функции-члены (и только они) могут иметь описатель const
class Array
{
...
inline double operator[] (int n) const;
Такие функции не имеют права изменять поля класса (кроме полей, определённых как mutable). Если они пытаются это сделать, компилятор должен выдать сообщение об ошибке.
Наследование
В C++ при наследовании одного класса от другого наследуется реализация класса, плюс класс-наследник может добавлять свои поля и функции или переопределять функции базового класса. Множественное наследование разрешено.
Конструктор наследника вызывает конструкторы базовых классов, а затем конструкторы нестатических членов-данных, являющихся экземплярами классов. Деструктор работает в обратном порядке.
Наследование бывает публичным, защищённым и закрытым (то есть закрытого типа):
Доступ члена базового класса/режим наследования private-член protected-член public-член
private-наследование недоступен private private
protected-наследование недоступен protected protected
public-наследование недоступен protected public
Наследник — это больше чем базовый класс, поэтому, если наследование открытое, то он может использоваться везде, где используется базовый класс, но не наоборот.
Полиморфизм
Полиморфизмом в программировании называется переопределение наследником функций-членов базового класса,
Структура программы на языке С++
#include <iostream>// подключаем библиотеку
using namespace std;
int main()\\ заголовок функции
{
int a,b,c,d,x,y,z; //Объявление переменных
cin >> a;\\ ввод переменных
cin >> b;
cin >> c;
cin >> d;
x=a+b;
y=c+d;
z=x+y;\\ считаем формулу
cout << z<< endl;\\ выводим результат
system ("pause");\\ строка паузы, чтобы смогли увидеть результат вычислений
return 0;}
