Средства программирования алгоритмов линейной структуры
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

 

4.3.1. Две роли класса

4.3.2.Структура простейших C# – программ

4.3.3. Методы и конструкторы класса

4.3.4. Класс как модуль и класс со статическими полями и методами

4.3.5. Создание и использование методов

4.3.6. Перегрузка методов

4.3.5.Средства программирования алгоритмов линейной структуры и функции    

ввода и вывода данных

 

Две роли класса

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

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

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

Далее в этом разделе класс будем воспринимать только как модуль. Это необходимо для изучения базовых средств языка C#.

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

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

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

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

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

Язык C# допускает как классы, являющиеся типами данных, так и классы, играющие единственную роль модуля. Классы, являющиеся только модулями и предоставляющие свои сервисы другим классам, хорошо знакомы, поскольку появлялись в самых первых программах. К ним относятся, например, такие классы, как Console, Convert, Math. Кроме того классы, являющиеся только модулями удобно использовать для обучения базовых средств языка.

 

Дата: 2019-11-01, просмотров: 184.