Обособленный фрагмент программы сочетающий в себе поля и методы это

Аннотация: В данной лекции рассматривается логика объектно-ориентированного подхода. Описание классов и объектов. Основные элементы класса: поля, методы, указатель this, конструкторы, деструкторы, операции. Дружественные функции и классы. Указатели на элементы классов

ООП как развитие идей структурного подхода

Презентацию к лекции Вы можете скачать здесь.

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

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

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

Java SE. Урок 17. Поля и методы

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

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

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

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

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

Статические методы | Фрагмент лекции JavaRush — университета

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

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

Идея классов является основой объектно-ориентированного программирования ( ООП ). Основные принципы ООП были разработаны еще в языках Simula -67 и Smalltalk , но в то время не получили широкого применения из-за трудностей освоения и низкой эффективности реализации . В С++ эти концепции реализованы эффективно и непротиворечиво , что и явилось основой успешного распространения этого языка и внедрения подобных средств в другие языки программирования.

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

Конкретные переменные типа данных » класс » называются экземплярами класса, или объектами. Объекты взаимодействуют между собой, посылая и получая сообщения. Сообщение — это запрос на выполнение действия, содержащий набор необходимых параметров. Механизм сообщений реализуется с помощью вызова соответствующих функций. Таким образом, с помощью ООП легко реализуется так называемая «событийно-управляемая модель», когда данные активны и управляют вызовом того или иного фрагмента программного кода 1 Событийно-управляемая модель не является частью ООП и может быть реализована и без использования объектов (пример — программирование на языке С под Windows с использованием функций API). .

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

Читайте также:
В какой программе можно работать со слоями

Свойства ООП

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

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

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

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

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

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

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

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

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

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

Описание класса

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

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

class < [ private: ] public: >; // Описание заканчивается точкой с запятой

Спецификаторы доступа private и public управляют видимостью элементов класса. Элементы, описанные после служебного слова private , видимы только внутри класса. Этот вид доступа принят в классе по умолчанию.

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

Поля класса:

  1. могут быть простыми переменными любого типа, указателями, массивами и ссылками (т.е. могут иметь практически любой тип, кроме типа этого же класса, но могут быть указателями или ссылками на этот класс);
  2. могут быть константами (описаны с модификатором const ), при этом они инициализируются только один раз (с помощью конструктора ) и не могут изменяться;
  3. могут быть описаны с модификатором static , но не как auto , extern и register .

Инициализация полей при описании не допускается.

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

Классы могут быть глобальными (объявленными вне любого блока) и локальными (объявленными внутри блока, например, внутри функции или внутри другого класса). Обычно классы определяются глобально.

Локальные классы имеют некоторые особенности:

  • локальный класс не может иметь статических элементов (уточнение: современные стандарты допускают это);
  • внутри локального класса можно использовать из охватывающей его области типы, статические ( static ) и внешние ( extern ) переменные, внешние функции и элементы перечислений;
  • запрещается использовать автоматические переменные из охватывающей класс области;
  • методы локальных классов могут быть только встроенными ( inline ); (уточнение: согласно современным стандартам это необязательно)
  • если один класс вложен в другой класс, они не имеют каких-либо особых прав доступа к элементам друг друга и могут обращаться к ним только по общим правилам.

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

class monster < int health, ammo; public: monster(int he = 100, int am = 10) < health = he; ammo = am;>void draw(int x, int y, int scale, int position); int get_health() int get_ammo()>;

В этом классе два скрытых поля — health и ammo , получить значения которых извне можно с помощью методов get_health() и get_ammo() . Доступ к полям с помощью методов в данном случае кажется искусственным усложнением, но надо учитывать, что полями реальных классов могут быть сложные динамические структуры, и получение значений их элементов не так тривиально. Кроме того, очень важной является возможность вносить в эти структуры изменения, не затрагивая интерфейс класса.

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

В приведенном классе содержится три определения методов и одно объявление (метод draw ). Если тело метода определено внутри класса, он является встроенным ( inline ). Как правило, встроенными делают короткие методы. Если внутри класса записано только объявление ( заголовок) метода , сам метод должен быть определен в другом месте программы с помощью операции доступа к области видимости :

void monster::draw(int x, int y, int scale, int position) < /* тело метода */>

Встроенные методы можно определить и вне класса с помощью директивы inline (как и для обычных функций, она носит рекомендательный характер):

inline int monster::get_ammo()

Методы можно перегружать (это одно из проявлений полиморфизма ), а также объявлять либо константными, либо статическими (но не одновременно).

В каждом классе есть метод, имя которого совпадает с именем класса. Он называется конструктором и вызывается автоматически при создании объекта класса. Конструктор предназначен для инициализации объекта . Автоматический вызов конструктора позволяет избежать ошибок, связанных с использованием неинициализированных переменных. Подробнее конструкторы описываются далее в разделе » Конструкторы «.

Типы данных struct и union являются специальными видами класса.

Источник: intuit.ru

NEWOBJ.ru → Введение в ООП с примерами на C# →

Состояние объекта (state) – перечень полей объекта (обычно статический) и текущих значений каждого из этих полей (обычно динамический).

Поможем написать учебную работу

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

Узнай цену своей работы —>

1 Данный компонент является основой программы Delphi :

  1. модуль ;
  2. процедура ;
  3. кнопка ;
  4. форма .

2 Данный компонент предназначен для вывода текста на поверхность формы:

3 Данный компонент представляет собой таблицу, ячейки которой содержат строки символов:

4 Данный компонент обеспечивает вывод на поверхность формы иллюстраций:

  1. Image ;
  2. Timer ;
  3. ListBox ;
  4. ComboBox .

5 Данный компонент дает возможность ввести данные в поле редактирования путем набора на клавиатуре или выбора из списка:

  1. Image ;
  2. Timer ;
  3. ListBox ;
  4. ComboBox .

6 Данный компонент представляет собой независимый переключатель:

  1. RadioGroup;
  2. CheckBox;
  3. RadioButtom;
  4. ListBox.

7 Данный компонент представляет собой список в котором можно выбрать нужный элимент:

  1. RadioGroup;
  2. CheckBox;
  3. RadioButtom;
  4. ListBox.

8 Выберите название окна в среде Delphi, определяющего свойства и обработчики событий компонентов:

  1. Form;
  2. Object Inspector;
  3. Delphi6 – Project1;
  4. Object Tree View.

9 Выберите название окна в среде Delphi, представляющего иерархию компанетов:

  1. Form;
  2. Object Inspector;
  3. Delphi6 – Project1;
  4. Object Tree View.

10 Для размещения кода программы пользователя служит:

  1. форма;
  2. дерево объектов;
  3. инспектор объектов;
  4. модуль.

11 Данное свойство компонента отвечает за текст, находящийся в поле ввода и редактирования:

12 Данное свойство компонента отвечает за шрифт, используемый для отображения текста:

13 Данное свойство компонента отвечает за его ширину:

14 Данное свойство компонента отвечает за расстояние от верхней границы компонента до верхней границы формы:

15 Данное свойство компонента отвечает за массив срок компонента:

16 Данное свойство компонента отвечает за номер элемента, выбранного в списке:

17 Данное свойство компонента отвечает за количество колонок таблицы:

  1. DefaultColWidth;
  2. DefaultRowHeight;
  3. RowCount;
  4. ColCount.

18 Данное свойство компонента отвечает за высоту строк таблицы:

  1. DefaultColWidth;
  2. DefaultRowHeight;
  3. RowCount;
  4. ColCount.
Читайте также:
Как восстановить удаленную программу на 7 винде

19 Данное свойство компонента отвечает за автоматическое масштабирование:

  1. Strech;
  2. Proportional;
  3. AutoSize;
  4. Center.

20 Данное свойство компонента Image отвечает за автоматическое масштабирование иллюстрации в соответствии с реальным размером компонента:

  1. Strech;
  2. Proportional;
  3. AutoSize;
  4. Center.

21 Данное свойство компонента Image отвечает за расположение картинки по центру:

  1. Strech;
  2. Proportional;
  3. AutoSize;
  4. Center.

22 Укажите какая функция в среде Delphi используется для преобразования значения действительного типа в строку:

  1. IntToStr;
  2. FloatToStr;
  3. RealToStr.

23 Данное событие происходит при нажатии клавиши клавиатуры:

  1. Click;
  2. DblClick;
  3. KeyPress;
  4. Create.

24 Данное событие происходит при создании объекта:

  1. Click;
  2. DblClick;
  3. KeyPress;
  4. Create.

25 Данное свойство отвечает за перенос слов на другую строку:

  1. Enabled ;
  2. Text;
  3. Visible ;
  4. WordWrap .

26 Замкнутый, обособленный фрагмент программы, сочетающий в себе поля и методы:

27 Специальный тип данных, используемый для описания объекта :

28 Единство внутри класса трех составляющих его сущностей: полей, методов и свойств:

  1. наследование;
  2. инкапсуляция;
  3. полиморфизм.

29 Возможность реализации одноименных, но алгоритмически разных методов в классе-родителе и классе потомке:

  1. наследование;
  2. инкапсуляция;
  3. полиморфизм.

30 Данное свойство позволяет изменять цвет объекта

31 Программа на языке Паскаль может содержать следующие символы:

  1. Латинские буквы, цифры, специальные символы;
  2. Латинские буквы, цифры, специальные символы, русскоязычные символы;
  3. Любые символы.

32 Целочисленный тип переменных в TPascal описывается:

33 Строковый тип переменных в TPascal описывается:

34 Оператор ввода в среде TPascal:

35 Тело программы находится в промежутке:

  1. От begin до end;
  2. От program до begin;
  3. От var до begin .

36 Данный тип данных позволяет задавать две константы, которые определяют границы изменения переменных данного типа:

  1. перечисляемый ;
  2. логический ;
  3. интервальный .

37 Раздел описания переменных начинается с зарезервированного слова:

38 Раздел описания типов начинается с зарезервированного слова:

3 9 Оператор выбора в TPascal

  1. For. to…do ;
  2. If. then. else ;
  3. Case..of .

4 0 Условный оператор в TPascal

  1. For. to…do ;
  2. If. then. else ;
  3. Case..of .

41 Определите значение целочисленной переменной у после выполнения фрагмента программы:

42 Какой из операторов цикла в TPascal является оператором с постусловием:

  1. Repeat….until;
  2. For….to….do;
  3. While….do .

43 Какой из операторов цикла в TPascal является оператором с предусловием:

  1. Repeat….until;
  2. For….to….do;
  3. While….do .

44 Определить результат операции Y =12345 div 10:

45 Определить результат операции Y =12345 mod 10:

46 set2: set of ‘a’..’z’:

  1. Определение записи;
  2. Определение массива;
  3. Определение множества.
  1. Последовательность символов одного типа;
  2. структурированный тип данных, состоящий из фиксированного числа элементов одного типа;
  3. структурированный тип данных, состоящий из фиксированного числа элементов.

48 Эта функция возвращает символ (тип char ), соответствующий коду x :

  1. Ord( x ) ;
  2. Chr( x ) ;
  3. Pos( x ) .

49 Эта функция возвращает значение типа byte , являющееся кодом символа x :

  1. Ord( x ) ;
  2. Chr( x ) ;
  3. Pos( x ) .

50 Процедуры и функции этого модуля позволяют управлять работой клавиатуры, текстовым выводом на экран и звуком:

51 Процедуры и функции этого модуля обеспечивают работу с экраном дисплея в графическом режиме:

52 Для того, чтобы связать файловую переменную в программе с файлом на диске используется процедура:

53 Файл можно открыть для записи и очистить при помощи процедуры:

54 Данная процедура выводит точку с заданным цветом

  1. PutPixel;
  2. Circle;
  3. SetBkColor;
  4. Line .

55 Данная процедура устанавливает цвет фона

  1. PutPixel;
  2. Circle;
  3. SetBkColor;
  4. Line .

56 Каким оператором в языке TPascal описывается одномерный массив:

  1. Array [1..n,1..m];
  2. Array [1..n];
  3. Array [1..n,1..m,1..k].

57 Виды развилки в TPascal:

  1. полная и неполная ;
  2. вложенная ;
  3. полная, неполная, вложенная .

58 Оператор присваивания в языке Pascal

59 a = Array [1..10] of Integer :

  1. Определение записи ;
  2. Определение массива ;
  3. Определение множества .

60 Выберите из предложенных вариантов значение, которое используется в TPascal для типа Real:

61 Диалог отвечающий за изменение шрифта:

  1. ColorDialog;
  2. FontDialog;
  3. SaveDialog.

62 Данный диалог предназначен для создания окна диалога «Открыть файл»:

  1. OpenPictureDialog;
  2. SaveDialog;
  3. OpenDialog.

63 Функция Log10 :

  1. вычисляет натуральный логарифм ln(x);
  2. вычисляет десятичный логарифм;
  3. вычисляет логарифм аргумента по основанию N.
  1. вычисляет квадрат аргумента Х;
  2. вычисляет квадратный корень аргумента Х;
  3. округляет число к ближайшему целому.

65 Функция Round :

  1. вычисляет квадрат аргумента Х;
  2. вычисляет квадратный корень аргумента Х;
  3. округляет число к ближайшему целому.

66 Функция Random :

  1. генерирует случайное число с отклонением по Гауссу;
  2. генерирует случайное число в заданном диапазоне;
  3. инициализирует генератор случайных чисел.

67 Символ «А» шаблона маски означает:

  1. что в данной позиции должен быть любой символ;
  2. что в данной позиции должна быть буква или цифра;
  3. что в данной позиции должна быть цифра.

68 Событие onExit – возникает:

  1. когда компонент теряет фокус ввода;
  2. при двойном щелчке мышкой по компоненту;
  3. при отпускании клавиатурной кнопки она оказалась в верхнем положении;

69 Данное событие возникает при перемещении указателя мышки над компонентом:

  1. onMouseDown;
  2. onMouseUp;
  3. onMouseMove.

70 Свойство MultiSelect отвечает за:

  1. выделение нескольких компонентов;
  2. множественный выбор в списке;
  3. поиск в списке.

71 Свойство ItemIndex отвечает за:

  1. индекс выбранной строки;
  2. количество выбранных строк;
  3. индекс последней строки.

Диплом на заказ

Узнать стоимость написания работы —>

Материалы собраны группой SamZan и находятся в свободном доступе

Источник: samzan.net

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