Объект в ооп (объектно-ориентированном программировании) понятие и виды , объекты ооп и семантической сети

ООП?

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

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

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

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

Расскажите про основные понятия ООП: «класс», «объект», «интерфейс».

Класс – это способ описания сущности, определяющий состояние и поведение, зависящее от этого состояния, а также правила для взаимодействия с данной сущностью (контракт).

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

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

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

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

семантическая сеть

Semantic Web , по существу , основа распределенных объектов. Две ключевые технологии в семантической сети — это язык веб-онтологий (OWL) и структура описания ресурсов (RDF). RDF предоставляет возможность определять основные объекты — имена, свойства, атрибуты, отношения, — которые доступны через Интернет. OWL добавляет более богатую объектную модель, основанную на теории множеств, которая обеспечивает дополнительные возможности моделирования, такие как множественное .

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

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

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

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

Объекты OWL на самом деле больше всего похожи на объекты в фреймовых языках искусственного интеллекта, таких как KL-ONE и Loom.

В следующей таблице традиционные объекты объектно-ориентированных языков программирования, таких как Java или C ++, противопоставляются объектам семантической сети:

Объекты ООП Объекты семантической сети
Классы рассматриваются как типы для экземпляров. Классы рассматриваются как наборы индивидов.
Экземпляры не могут изменять свой тип во время выполнения. Членство в классе может измениться во время выполнения.
Список классов полностью известен во время компиляции и не может быть изменен после этого. Классы можно создавать и изменять во время выполнения.
используются во время сборки. Ошибки времени компиляции указывают на проблемы. Reasoners можно использовать для классификации и проверки согласованности во время выполнения или сборки.
Классы кодируют большую часть своего значения и поведения с помощью императивных функций и методов. Классы делают свое значение явным в терминах операторов OWL. Никакой императивный код не может быть добавлен.
Экземпляры анонимны постольку, поскольку к ним нельзя легко обратиться извне выполняющейся программы. Все именованные ресурсы RDF и OWL имеют уникальный URI, по которому на них можно ссылаться.
Закрытый мир: если недостаточно информации, чтобы доказать истинность утверждения, то оно считается ложным. Открытый мир: если информации недостаточно, чтобы доказать истинность утверждения, оно может быть истинным или ложным.

Объекты в ООП — это объекты реального мира

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

Объектно-ориентированный подход предлагает описывать системы в виде взаимодействия объектов.

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

Схема взаимодействия объектов

В операции снятия денег через банкомат участвуют 3 объекта: «клиент Иванов», «банкомат на Тверской» и «счет № 66579801», который открыт в данном банке для Иванова. Подойдя к банкомату и засунув свою карточку, объект «клиент Иванов» посылает банкомату сообщение «Начать работу». Получив такое сообщение, банкомат выводит на экран какую-нибудь информацию и запрашивает код доступа, т.е объект «банкомат на Тверской» посылает сообщение объекту «клиент Иванов» — «Сообщить идентификационный код». Если идентификация прошла успешно, «клиент Иванов» просит выдать ему 1000 рублей. Он посылает сообщение об этом банкомату, а тот в свою очередь объекту «счет № 66579801». Приняв это сообщение объект «счет № 66579801» проверяет есть ли у него 1000 рублей, и, если есть, пересылает разрешение на снятие денег, одновременно уменьшая свой баланс на соответствующую сумму. Банкомат передает деньги и на этом процедура заканчивается.

Объекты выполняют необходимые действия передавая друг другу сообщения.

Описание в виде объектов позволяет определить различные компоненты системы. Те же самые объекты — «счет № 66579801» и «клиент Иванов» — будут учавствовать в другой операции при которой клиент приходит в отделение банка для снятие или зачисления денег на свой счет.

Приведенная ситуация является ярким примером сущности понятия «объект в ООП«. Сложно дать четкое определение этому понятию, приведу цитату этого определения Ивара Якобсона:

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

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

7.3 Поняние Инкапсуляция в ООП.

Одним из главных свойств ООП является инкапсуляция — замыкание в общей оболочке (Object…end) всех составляющих описания. При этом поля оказываются глобальными для методов данного объекта, т.к. у полей и методов общая область действия, то совпадение имен полей и формальных параметров методов не допустимо. Блоки-методы вынесены за описание типа объект. Имена блоков-методов, принадлежащих разным типам могут совпадать. Даже при совпадении имен заголовки методов будут различны, т.к. состоят из префикса (имени типа) и имени метода.
Доступ к полям объектов из вне можно принудительно ограничивать. Для этого группа полей в описании объекта заключается в скобки Private Public . Об этом говорит сайт https://intellect.icu . После этого поля окажутся доступными лишь методам данного модуля.

Ключевое слово this

Ключевое слово this используется внутри класса для ссылки на текущий экземпляр класса. Чаще всего его приходится использовать в методах для доступа к полям класса. Например, если у класса Building, с которым мы работали в предыдущем разделе, есть поле height, метод SetHeight был создан нами для того, чтобы присваивать этому полю значение, аргумент этого метода – переменная с именем height

float SetHeight(float height)

В теле данного метода мы должны как-то явно задать, что значение этого аргумента будет присвоено приватному полю height, записать height = height мы не можем, так как в этом случае нет четкого понимания, что чему будет присваиваться. В этом случае, для явного указания, что мы хотим присвоить значение полю класса, следует использовать ключевое слово this так, как мы это реализовали в методе SetHeight

public float SetHeight(float height) => this.height = height;

Парадигмы программирования и их виды

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

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

Существуют различные типы парадигм, например процедурный, ориентированный на работу с функциями, или логический, подразумевающий решение базовых логических задач в духе «если А = true, то и B = true». Но есть и более интересный подход к решению задач разработки, и это ООП-парадигма. 

Рассмотрим некоторые CASE-средства, имеющие поддержку UML.

1. Microsoft Visio

Microsoft Visio – это средство для построения диаграмм, разработанное компанией Microsoft. MS Visio позволяет преобразовывать технические концепции и бизнес-процессы в определенную визуальную форму, однако данный пакет предназначен только для рисования диаграмм.

Изобразительные же возможности Visio действительно весьма широки:

  • Используя предопределенные фигуры Visio Professional, drag-and-drop и мастера, можно быстро и просто создавать понятные и информативные диаграммы.
  • Возможности Visio можно легко расширять, используя новые шаблоны бизнес-диаграмм.
  • В Visio можно прототипировать интерфейс приложений с помощью встроенных шаблонов пользовательского интерфейса Microsoft Windows XP, что позволяет создавать модель пользовательского интерфейса в стандартном Windows XP-стиле.
  • С помощью шаблонов UML можно создавать UML-диаграммы статической структуры ПО.
  • и т.д.

Однако MS Visio не является полноценным средством моделирования, а является программой для создания иллюстраций, умеющей также рисовать диаграммы UML.

Интерфейс MS Visio очень похож на интерфейс других программ семейства MS Office (рис.6).

Рис. 6 – Интерфейс MS Visio

К особенностям MS Visio можно отнести следующее:

  • возможность документирования и анализа бизнес-процессов;
  • возможность отслеживания комментариев членов команды;
  • поддержка Tablet PC;
  • наличие инструментов для мозгового штурма;
  • возможность создания календарей;
  • простое создание и использование технических видов диаграмм;
  • быстрое создание и редактирование диаграмм;
  • поддержка множества локальных языков;
  • интеграция с другими приложениями MS Office.

Основные понятия объектно-ориентированного программирования

Любая функция в программе представляет собой метод для объекта некоторого класса.

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

Вся программа в таком виде представляет собой объект некоторого класса с единственным методом run (выполнить).

Программирование «от класса к классу» включает в себя ряд новых понятий. Основными понятиями ООП являются

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

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

Внутри объекта код и данные могут быть закрытыми или открытыми.

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

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

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

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

Иначе говоря, новый класс наследует как данные старого класса, так и методы их обработки.

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

Пример наследования – определение структуры, отдельный член которой является ранее определенной структурой.

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

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

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

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

123

int abs(int);long int labs(long int);double fabs(double);

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

Язык C++

отличие ооп и процедурно-ориентированного программирования

  1. В объектно-ориентированном программировании программа делится на части, называемые объектами, тогда как в процедурно-ориентированном программировании программа делится на небольшие части, называемые функциями.
  2. В объектно-ориентированном программировании объекты могут перемещаться и взаимодействовать друг с другом через функцию-член, тогда как в процедурно-ориентированном программировании данные могут свободно перемещаться от функции к функции в системе.
  3. В объектно-ориентированном программировании значение придается данным, а не процедурам или функциям, потому что они работают как реальный мир. С другой стороны, в процедурно-ориентированном программировании значение придается не данным, а функциям, а также последовательности действий, которые необходимо выполнить.
  4. Объектно-ориентированное программирование следует подходу снизу вверх, тогда как процедурно-ориентированное программирование следует подходу сверху вниз.
  5. Объектно-ориентированное программирование обеспечивает скрытие данных, что делает его более безопасным. Но
    процедурное программирование не имеет надлежащего способа скрытия данных, поэтому оно менее безопасно.
  6. В объектно-ориентированном программировании данные важнее функции. С другой стороны, в процедурном программировании функция важнее данных.
  7. Перегрузка в виде перегрузки функций и перегрузки операторов возможна в объектно-ориентированном программировании, тогда как в процедурно-ориентированном программировании перегрузка невозможна.
  8. В объектно-ориентированном программировании существует три режима доступа: «открытый», «частный», «защищенный», которые используются в качестве общего ресурса для доступа к атрибутам или функциям. С другой стороны, в процедурно-ориентированном программировании нет специального режима доступа для доступа к атрибутам или функциям в программе.
  9. Существующий код в объектно-ориентированном программировании может быть повторно использован функцией, называемой наследованием. А в процедурно-ориентированном программировании такой возможности нет.
  10. В объектно-ориентированном программировании легко добавить новые данные и функции, тогда как в процедурно-ориентированном программировании добавить новые данные и функции непросто.
  11. В объектно-ориентированном программировании данные не могут легко перемещаться от функции к функции, они могут быть общедоступными или частными, чтобы мы могли контролировать доступ к данным. В процедурно-ориентированном программировании большинство функций используют глобальные данные для совместного использования, к которым можно получить свободный доступ от функции к функции в системе.
  12. Примеры объектно-ориентированных языков программирования включают: C ++, Java, VB.NET, C # .NET и Python, с другой стороны, C, VB, Fortran и Pascal являются общими примерами процедурно-ориентированных языков.

Структура объектно-ориентированного программирования

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

Объекты

И хотя в структуре ООП объекты находятся не на первом месте, мы начнем с них, так как это упрощает общее понимание парадигмы. 

Объект – это кусок кода, описывающий элемент с конкретным набором характеристик и функций. Например, вы делаете видеоигру, в которой есть персонаж. Ваш герой. 

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

Объекты могут описывать других персонажей и средства передвижения.

Методы

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

Атрибуты

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

Классы

Это наиболее абстрактная и обобщенная форма в ООП. Что-то в духе шаблона, на базе которого строятся другие элементы структуры кода.

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

Поэтому мы можем создать класс – то есть объект, способный стать базой для других объектов. Например, класс – персонаж. Он умеет ходить, драться, имеет характеристики наподобие уровня здоровья или количества маны, то есть атрибуты, что есть у любых рас и классов в нашей РПГ. А уже человек-воин (объект) с ником Nagibator777 будет содержать более специфичные характеристики и методы, зависящие от решений игрока и других внешних факторов. Класс – это пример абстракции и наследования, упрощающий генерацию новых объектов. 

На картинках и схемах эта структура выглядит куда понятнее.

OОП – это парадигма. Что такое парадигма?

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

Объектно-ориентированное программирование – не единственная парадигма. Существуют, например, процедурная, структурная, аспектно-ориентированная, объектно-ориентированная; метапрограммирование; функциональная, логическая и др. По мере развития программист учится работать с разными парадигмами, расширяет кругозор.

Преобразования, определяемые классом

Условно, все преобразования типов можно разделить на четыре основные группы:

Cтандартный к стандартному — эти преобразования уже были нами подробно рассмотрены в одном из уроков. Cтандартный к абстрактному — преобразования этой группы основаны на использовании конструкторов.

#include <iostream>
using namespace std;
class CTest 
{
private
	int dig;
public
	CTest (int dig)//конструктор
	{
		this->dig=dig;//инициализируем
	}
	void Show ()
	{
		cout<<dig<<endl;
	}
};
void main ()
{
	//Преобразование от int CTest
	CTest A(5);
	A.Show();
	//Преобразование от double CTest
	CTest B(3.7);
	B.Show();
}

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

Абстрактный к стандартному
Абстрактный к абстрактному

Для преобразования абстрактного типа к стандартному или абстрактного к абстрактному в С++ существует средство — функция, выполняющая преобразование типов, или оператор-функция преобразования типов. Она имеет следующий синтаксис:

Class::operator type (void); 

Эта функция выполняет определенное пользователем преобразование типа Class к типу type. Эта функция должна быть членом класса Class и не иметь аргументов. Кроме того, в ее объявлении не указывается тип возвращаемого значения. Обращение к этой функции может быть как явным, так и неявным. Для выполнения явного преобразования можно использовать как традиционную, так и «функциональную» форму.

#include <iostream>
#include <Windows.h>
using namespace std;
class Number 
{
private
	int num;
public
	Number (int num)
	{
		this->num=num;
	}
	void Show ()
	{
		cout<<num<<endl;
	}
};
class CTest 
{
private
	int dig;
public
	CTest(int dig)
	{
		this->dig=dig;
	}
	void Show()
	{
		cout<<dig<<endl;
	}
	//преобразование от CTest к int
	operator int ()
	{
		return dig;
	}
	operator Number()
	{
		return Number(dig);
	}
};
void main ()
{
	SetConsoleOutputCP(1251);
	SetConsoleCP(1251);
 
	//преобразование от CTest к int
	CTest A(20);
	int a=A;
	cout<<a<<endl;
 
	//преобразование от CTest к Number
	Number B();
	B=A;
	B.Show();
}

IBM Rational Rose

CASE-средство IBM Rational Rose представляет собой современный интегрированный инструмент для анализа, проектирования архитектуры, моделирования и разработки ИС. В Rational Rose язык UML стал базовой технологией визуализации и разработки систем, чем и обуславливается популярность и стратегическая перспективность данного продукта.

Rational Rose имеет несколько различных вариантов комплектации, которые отличаются между собой предоставляемыми возможностями. Базовым вариантом в настоящие дни является платформа Rational Rose Enterprise Edition, обладающая наиболее полными функциональными возможностями.

Являясь простым и при этом мощным CASE-средством для визуальной разработки ИС любого класса, программа Rational Rose позволяет создавать, изменять, а также проверять на корректность разрабатываемые модели.

Интерфейс программы Rational Rose представлен на рис.7.

Рис. 7 – Интерфейс Rational Rose

Одним из преимуществ данного продукта является возможность использования UML-диаграмм. В Rational Rose представлены следующие типы диаграмм:

  • диаграммы прецедентов (рис.8);
  • диаграммы топологии;
  • диаграммы классов (рис.9);
  • диаграммы компонент;
  • диаграммы активности;
  • диаграммы состояний;
  • диаграммы взаимодействия.

Рис. 8 – Диаграмма прецедентов

Рис. 9 – Диаграмма классов

Программа Rational Rose предоставляет огромные возможности для проектирования информационных систем с использованием лучших архитектурных принципов. Rational Rose предоставляет различные возможности следующим категориям разработчиков ИС:

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

К преимуществам Rational Rose также относятся:

  • полноценная поддержка UML;
  • многоязыковая локализация;
  • интеграция Rational Rose с другими пакетами от компании Rational.

Что представляет собой «обмен сообщениями»?

Объекты взаимодействуют, посылая и получая сообщения. Сообщение — это запрос на выполнение действия, дополненный набором аргументов, которые могут понадобиться при выполнении действия. В ООП посылка сообщения (вызов метода) — это единственный путь передать управление объекту. Если объект должен «отвечать» на это сообщение, то у него должна иметься соответствующий данному сообщению метод. Так же объекты, используя свои методы, могут и сами посылать сообщения другим объектам. Обмен сообщениями реализуется с помощью динамических вызовов, что приводит к чрезвычайно позднему связыванию (extreme late binding).

Классы

Класс в языке C# объявляется с помощью ключевого слова class перед ним могут стоять несколько модификаторов, после располагается имя класса. Если предполагается, что класс является наследником другого класса или реализует один или несколько интерфейсов, то они отделяются двоеточием от имени класса и перечисляются через запятую.

class Building 
{
}

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

class DemoClass
{
    // Поле класса
    int field = 0;
      
    // Свойство класса
    public int Property {get;set;}
      
    // Метод класса
    public void Method()
    {
        Console.WriteLine("Method");
    }
}

Далее, мы подробно остановимся на каждом из перечисленных составляющих класса.

Объект класса создается также как переменная любого, уже известного вам по предыдущим урокам, типа данных. Напомним, что класс является типом данных, который мы можем самостоятельно объявить. Все встроенные типы являются определенными классами, например, переменная типа int – это объект класса System.Int32.

Создадим объект класса DemoClass

// Создание объекта класса DemoClass
DemoClass demo = new DemoClass();
// Вызов метода Method объекта demo
demo.Method();

С методами встроенных типов мы уже встречались ранее, например, метод поиска элемента в строке, или преобразование строки в число и т.п.

Ключевое слово static

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

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

Примером статического класса может быть класс Math из стандартной библиотеки C#.

Исходный код примеров из этой статьи можете скачать из нашего github-репозитория.

ЗАКЛЮЧЕНИЕ

Объектно-ориентированное проектирование является подходом к разработке ПО, который основан на использовании объектов. К основным понятиям ООП относятся «класс» и «объект».

К основополагающим принципам ООП относятся:

  • инкапсуляция;
  • наследование;
  • абстрагирование;
  • полиморфизм;
  • интерфейс.

Язык UML – это язык графического описания для объектного моделирования в области разработки ПО, являющийся унифицированным языком моделирования.

Стоит отметить, что язык UML не относится к языкам программирования.

Язык UML используется не только для моделирования ПО, но и для описания и моделирования бизнес-процессов и отображения организационных структур.

Язык UML поддерживается практически всеми мировыми производителями CASE-средств, среди которых приоритет остается за Rational Rose.

В ходе выполнения курсовой работы были рассмотрены основы ООП (основные понятия, сущность подхода, преимущества и недостатки подхода), язык UML (основные понятия, цели, сущности и т.д.) и выполнен обзор некоторых CASE-средств, поддерживающих UML (MS Visio, IBM Rational Rose, Sparx System Enterprise Architect).

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Все про сервера
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: