Мегаобучалка Главная | О нас | Обратная связь


Сущность объектно-ориентированного подхода к программированию (Классы)



2015-11-10 754 Обсуждений (0)
Сущность объектно-ориентированного подхода к программированию (Классы) 0.00 из 5.00 0 оценок




 

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

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

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

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

Классы объектов часто удобно строить так, чтобы они образовывали иерархическую структуру. Например, класс “Студент”, описывающий абстрактного студента, может служить основой для построения классов “Студент 1 курса”, “Студент 2 курса” и т.д., которые обладают всеми свойствами студента вообще и некоторыми дополнительными свойствами, характеризующими студента конкретного курса. При разработке интерфейса с пользователем программы могут использовать объекты общего класса “Окно” и объекты классов специальных окон, например, окон информационных сообщений, окон ввода данных и т.п. В таких иерархических структурах один класс может рассматриваться как базовый для других, производных от него классов. Объект производного класса обладает всеми свойствами базового класса и некоторыми собственными свойствами, он может реагировать на те же типы сообщений от других объектов, что и объект базового класса и на сообщения, имеющие смысл только для производного класса. Обычно говорят, что объект производного класса наследует все свойства своего базового класса.

 

Введение в классы

 

Одним из наиболее важных понятий С++ является класс. Класс - это механизм для создания новых типов.

Синтаксис описания класса похож на синтаксис описания структуры.

class Имя_класса

{

закрытые элементы - члены класса

public:

открытые элементы - члены класса

};

На что здесь следует обратить внимание?

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

Члены класса - это переменные состояния и методы этого класса, иными словами членами класса могут быть как переменные, так и функции. Функции и переменные, объявленные внутри объявления класса, становятся членами этого класса. Функции-члены класса будем называть методами этого класса.

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

Пример.

class _3d

{

double x, y, z;

public:

double mod ();

double projection (_3d r);

};

В С++ для создания объектов традиционно принято использовать ключевое слово class.

Хотя функции mod() и projection(_3d r) объявлены в _3d, они еще не определены. Для определения метода - члена класса нужно связать имя класса, частью которого является метод, с именем класса. Это достигается путем написания имени функции вслед за именем класса с двумя двоеточиями. Два двоеточия называют операцией расширения области видимости.

 

double _3d::mod ()

{

return sqrt (x*x + y*y +z*z);

}

 

double _3d::projection (_3d r)

{

return (x*r.x + y*r.y + z*r.z) / mod();

}

 

...

 

main()

{

_3d a, b;

double dPro, dMod;

dMod = a.mod();

dPro = b.projection(a);

}

Пример 1. Реализовать класс для работы с линейным массивом, обеспечить:

  • создание заполнением случайным образом или вводом с клавиатуры;
  • сортировка выбором;
  • вывод;
  • поиск минимального и максимального элементов.

function changeProof(proofobj) { if (proofobj.style.display=='none') {proofobj.style.display='inline'} else {proofobj.style.display='none'} } Просмотреть листинг решения

// программа ==Пример 1==   #include <iostream.h> #include <stdlib.h> #include <time.h>   class Massiv { int *a, n; public: void Sozd(); void Del(); void Vvod(); void Vvod_Sl(); void Print(); int Min(int ind); // ind - с какого элемента начинать искать минимальный int Max(int ind); void Sort_Viborom(); };   void main() { Massiv a; randomize(); a.Vvod_Sl(); a.Print(); a.Sort_Viborom(); a.Print(); a.Del(); }   void Massiv :: Sozd() { cout << "Количество элементов массива? "; cin >> n; a = (int *) malloc (sizeof(int) * n); }   void Massiv :: Del() { free(a); }   void Massiv :: Vvod() { Sozd(); for (int i=0; i < n; i++) { cout << i << "-й элемент? "; cin >> *(a+i); } }   void Massiv :: Vvod_Sl() { Sozd(); for (int i=0; i < n; i++) { *(a+i)= -200+random(1001); } }   void Massiv :: Print() { for (int i=0; i < n; i++) { cout << *(a+i) << " "; } cout << endl; }   int Massiv :: Min(int ind) { for (int i=ind+1; i < n; i++) if (a[i]<a[ind]) ind = i; return ind; }   int Massiv :: Max(int ind) { for (int i=ind+1; i < n; i++) if (a[i]>a[ind]) ind = i; return ind; }     void Massiv :: Sort_Viborom() { for (int i=0; i < n-1; i++) { int m = Min(i); int Vsp=a[i]; a[i]=a[m]; a[m]=Vsp; } }

 



2015-11-10 754 Обсуждений (0)
Сущность объектно-ориентированного подхода к программированию (Классы) 0.00 из 5.00 0 оценок









Обсуждение в статье: Сущность объектно-ориентированного подхода к программированию (Классы)

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

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



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (754)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.008 сек.)