Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Медведев_С++_CLI_C#_Java_J#.doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
5 Мб
Скачать
☆

13.3.2. Статические классы

Появление статических классов в версии C# 2.0 - это стремление

фирмы Microsoft увеличить надёжность разрабатываемых программ.

Уже говорилось, что применение статических функций требует при ссылке к

ним использовать имя класса, в котором они описаны. При этом нет необхо-

димости создавать объект класса, если класс не содержит обычные функции,

при применении которых понадобятся ссылки к этому объекту класса.

Использование статических функций просто. Напомним статические функ-

ции Console.WriteLine(), Thread.Sleep(), Monitor.Enter(). Для вызова стати-

ческой функции достаточно написать имя класса и через точку имя самой

функции.

Так может быть определить класс так, чтобы в нём дозволялись только

статические функции и данные? Во второй версии C# 2.0 так и поступили.

Теперь в языке C# можно описать такой статический класс.

C# 2.0.

static class имя-класса

<

юлько статические функции и данные

>

Не смотря на то, что слово static стоит перед описываемым классом, при опи-

сании каждой статической функции или статических данных требуется до-

полнительно применить слово static.

Действительно, статический класс прост и надёжен. В нем запрещены обыч-

ные функции и данные, которые мешаются, поскольку их нельзя применять в

статических функциях.

Теперь при разработке программ постарайтесь пополнять свою коллекцию

статических функций, создавая необходимые статические классы. Это сдела-

ет программу более понятной и надёжной.

Заключение

Прочитав книгу, Вы познакомились не только с основами объектно-ориен-

тированного программирования, но и с принципиальными особенностями

языков C++/CLI, Java, J# и C#, что облегчит дальнейшее освоение этих язы-

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

Потоки, события, источники событий и уведомляющие или наблюдае-

мые объекты, приёмники событий или обозреватели, виртуальные функции и

абстрактные классы - как интересно, схоже и по-разному они реализованы в

этих языках! Очаровывают анонимные классы и делегаты. Насколько делега-

ты упростили и сделали понятным описание потоков и событий на языке C#!

А сколько ещё интересного есть в этих языках! Своеобразно и по-

разному создаются и применяются компоненты - особые объекты, из кото-

рых строятся сложные надёжные и безопасные программы. Компонентно-

ориентированное программирование, основываясь на одних и тех же прин-

ципах, тем не менее, существенно различается на .NET платформе языков C#

и C++/CLI от платформы языка Java.

Полученные знания в этой книге и желание познать и одолеть новое,

надеюсь, помогут сломать барьер, и более раскрыть интереснейший мир объ-

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

языке программирования.

Список литературы

1. Аравинд Kopepa, Стивен Фрейзер, Сэм Джентайл, Нираджан Кумар, Скотт

Маклин, Саймон Робинсон, П.Г. Саранг. Visual C++.NET: Пособие для разра-

ботчиков С++. - M.: Издательство "ЛОРИ", 2003. - 398 c.: ил.

2. Байдачный C.C. .NET Framework. Секреты создания Windows-приложений.

- M.: СОЛОН-Пресс, 2004. - 496 c.: ил.

3. Иванова Г. С. и др. Объектно-ориентированное программирование: Учеб.

для вузов. - M.: Изд-во МВТУ им. Н.Э.Баумана, 2001.- 320 c.: ил.

4. Либерти Д. Программирование на C#: 2-е издание. - СПб.: Символ-Плюс,

2003.-688 c.: ил.

5. Нейгел К. и др. C# 2005 для профессионалов.: Пер. с англ. - M.: Издатель-

ский дом "Вильямс", 2007 г. - 1376 c.: ил.

6. Ноутон П., Шилдт Г. Java 2.: Пер. с англ. - СПб.: БХВ-Петербувг, 2007. -

1072 c.: ил.

7. Медведев В.И. Программирование на С++, C++.NET/C# и .NET компо-

ненты. 2-е издание.: - Казань: Мастер Лайн, 2007. - 296 c.: ил.

8. Медведев В.И. .NET компоненты, контейнеры и удалённые объекты. - Ка-

зань: РИЦ «Школа», 2006. - 320 c.: ил. - (Серия «Современная прикладная

математика и информатика»),

9. Орлов А.Технология разработки программного обеспечения. Учебник. -

СПб.: Питер, 2002. - 464 c.: ил.

Ю.ПетцольдЧ.Программирование для Microsoft Windows на C#. B2-x

томах / Пер. с англ. - M.: Издательско-торговый дом "Русская Редакция",

2002.-576 + 624 c.: ил.

11. Рамбо Дж., Якобсон A., Буч Г. UML: специальный справочник. - СПб.:

Питер, 2002. - 656 c.: ил.

12. Страуструп Б. Язык программирования С++. Специальное издание.: Пер.

с англ. - M: ООО "Бином-Пресс", 2008 г. - 1104 c.: ил.

13. Троелсон Э. Язык программирования C# 2005 и платформа .NET 2.0. 3-е

издание.: Пер. с англ. - M: Издательский дом "Вильямс", 2007 г. - 1168 c.: ил.

14. Хогенсон Г. C++/CLI язык Visual С++ для среды .NET.: Пер. с англ. - M:

ООО Издательский дом "Вильямс", 2007 г. - 404 c.: ил.

15. Шилдт Герберт. C# 2.0. Серия "Полное руководство". - M.: ЭКОМ Паб-

лишерз, 2007. - 976 c.: ил.

16. Herbert Schildt. Java: The Complete Reference, Seventh Edition- Mc Hill

Graw, 2007. - 1024 pp.

17. Eric Clyberg, Dan Rubel. Eclipse. Building Commercial-Quality Plug-ins. Second

edition.- Addison-WesIey, 2006. - 810 pp.

Приложение 1. csLorryAndWarehouse-приложение

на языке C#

Прикладное окно csLorryAndWarehouse -приложения включает управляющие

интерфейсные элементы:

- кнопка "Добавить" добавления очередного шара в область клиента окна,

- кнопка "Удалить" удаления шаров из окна,

- кнопка "Stop" приостановки движения всех шаров,

- кнопка "Run" возобновления движения всех шаров,

- элемент списка номеров шаров.

Слева и справа в области клиента окна размещены склады - прямоугольники с

динамически меняющейся желтой частью, указывающей заполненность складов

грузом.

В середине окна находится зелёный прямоугольник - область контроля.

При нажатии на кнопку появляются шары-грузовики, перевозящие груз из

одного склада в другой, пока он не заполнится. После этого шары-грузовики

перевозят груз в противоположном направлении.

Цвет линии, расположенной внизу, указыает о направлении пересылки груза

(красный - слева направо, зелёный - справа налево).

Область контроля - ресурс, походя который шары-грузовики задерживаются на

некоторое время "для контроля".

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

нажать кнопку "Удалить".

Рис. Пр.1. Прикладное окно csLorryAndWarehouse-приложения на языке C#

ЦеФш ЩМДМВДЩ^цДР

///////////////

// C#

// Приложение с компонентами Lorry, Warehouse, ContrlRegion и

// с управляющими элементами

//

using System;

using System.Collections;

using System.Drawlng;

using System.Threading;

using System.Windows.Forms;

namespace csLorryAndWarehouse

{

// Классданных события evFromWarehouse

Dubiic class WarehouseEventAras: EventAras

{

private bool left; // Признак идентификации склада

private bool full; // Признак заполненности склада

pubiic WarehouseEventArgs (bool left, bool full)

{

this.left= left; this.full= full;

>

// Свойство заполнения склада

public bool Full

{

get {return full;>

>

// Свойство идентификации склада

public bool Left

{

get {return left;}

>

>

// Делегат события о переполнении и опустошении склада

public delegate void DelEvFromWarehouse (object sender,

WarehouseEventArgs args);

// Класс склада

public class Warehouse: UserControl

<

bool left; // Признак идентификации склада

int allLoad= 100; // Текущий размер груза в складе

lnt PartLoad= 10; // Размер груза грузовика