- •2. Основные понятия объектно-ориентированного программирования 7
- •3. Управляемый и неуправляемый код и данные 17
- •3.3 Управляемый и неуправляемый код и данные 17
- •5. Классы 38
- •6. Наследование классов и интерфейсы 49
- •7. Программа ввода/вывода информации 62
- •8. Управляемые данные и их использование 76
- •Предисловие
- •2.Основные понятия объектно-ориентированного программирования
- •2.1 Объекты
- •2.2Классы
- •Пример 2.2.2. Создание и использование объектов.
- •2.3Объекты, классы и uml
- •2.4Основные свойства объектно-ориентированного программирования
- •Пример 2.4.1. Класс cColBall, наследуемый класс cBall.
- •Пример 2.4.2. Использование функций объектов.
- •2.5Библиотеки классов
- •3.Управляемый и неуправляемый код и данные
- •3.1Виртуальная машина языка Java
- •3.2Общеязыковая среда выполнения clr платформы .Net
- •3.3Управляемый и неуправляемый код и данные
- •3.4Сборщик мусора
- •3.5Ссылочные типы и типы-значения
- •3.6Метаданные
- •3.7Библиотеки, пакеты и пространства имён
- •4.1О типах данных
- •4.2Консольный ввод и вывод
- •Void main (void)
- •Import java.Io.*;
- •Int X; // Целочисленная переменная X
- •4.3Объявление переменных
- •4.4Операторы динамического распределения памяти new и delete
- •Int X; // Выделить память в стеке
- •Пример 4.4.2. Использование оператора new в языках Java и c#.
- •Import java.Io.*;
- •Int X; // Выделить память в стеке для переменной
- •Int X; // Выделить память в стеке для переменной
- •4.5 Массивы
- •Пример 4.5.2. Описание одномерных массивов на изыках Java и c#.
- •Пример 4.5.4. Создание массивов объектов на языке Java.
- •Import java.Io.*;
- •4.6Объявления структур и перечислений
- •4.7Ссылки
- •Пример 4.7.1. Использование ссылочной переменной.
- •Void main()
- •4.8Перегрузка функций
- •Пример 4.8.1. Перегруженные функции swap (int &, int &) и swap (bool &,bool &).
- •Void swap (int &a, int &b) // Целочисленные параметры
- •Void swap (bool &a, bool &b) // Булевские параметры
- •4.9Объявление функций и передача аргументов по умолчанию
- •Void swap (int &, int &);
- •Void swap (char 8t, char &);
- •Пример 4.9.1. Задание значений параметров функции по умолчанию.
- •Void main ( )
- •5.Классы
- •5.1Определение класса
- •Пример 5.1.1. Описание класса и создание его объектов.
- •Int X; // Закрытая переменная X
- •Void Show ( ) // Открытая функция
- •Int X; // Закрытая (по умолчанию) переменная X
- •Void Show ( ) // Открытая функция
- •Пример 5.2.1. Описание функций вне класса.
- •Int X; //Закрытая переменная х
- •Void Set(int m,char n); // 0бъявление функции Set
- •Void Show (); // Объявление функции Show()
- •5.3Некоторые замечания о классах
- •Пример 5.3.1. Области видимости.
- •Int GetK() {return k;} // Функция GetK() видна в файле, классе а и в
- •Int n; // Переменная n закрыта и видна только в классе а
- •Int GetM () {return n;} // Функция GetM() открыта и видна
- •5.4Объекты в объектах
- •Пример 5.4.1. Объект содержит объект другого класса.
- •Void Show ()
- •Void Show ()
- •5.5Специальный вид функций класса - конструкторы и деструкторы
- •Пример 5.5.1. Перегруженные конструкторы.
- •Int GetX() {return X;} // Возвратить значение закрытой переменной
- •Void ShowX () // Вывести значение переменной
- •5.6Статические функции класса
- •Пример 5.6.1. Статические функции.
- •Void f() {Console::WriteLine("f()");} // Обычная функция
- •Int main() // Главная статическая функция Main()
- •6.Наследование классов и интерфейсы
- •6.1Об интерфейсах
- •Пример 6.2.1. Программа, использующая порождение public.
- •Void Show ()
- •Void Show()
- •Int main() // Главная статическая функция
- •6.4Использование конструктора базового класса
- •Java и j#
- •Java и j#
- •Пример 6.4.1. Выполнение конструкторов.
- •Int X; // Закрытая переменная X
- •Int Get() {return X;} // Получить значение X
- •Int main() // Главная статическая функция main()
- •6.5Сокрытые переменные, функции и их использование
- •Пример 6.5.1. Сокрытые переменные и функции.
- •6.6Интерфейсы
- •6.6.1Определение интерфейса
- •Interface class имя-интерф [ : public имя-базов-интерф
- •Interface имя-интерф [ : имя-базов-интерф [, имя-базов-интерф ] ... ]
- •Interface имя-интерф [ extends имя-базов-интерф
- •Interface Ipe // Интерфейс, объявляющий свойство p и функцию Hallo
- •Int p {set; get;} //Объявить свойство
- •Void Hallo(); // Объявить функцию
- •6.6.2Базовые интерфейсы
- •6.7 Упаковка и распаковка типов данных
- •Int main() // Главная статическая функция main()
- •7.Программа ввода/вывода информации
- •7.1Постановка задачи
- •Диаграмма вариантов использования
- •7.2 Диаграмма классов
- •7.3Диаграмма последовательности
- •7.4Диаграмма видов деятельности
- •Пример 7.5.1. Реализация класса cComputer.
- •Пример 7.5.2. Реализация класса cShop.
- •Пример 7.5.3. Реализация класса cData.
- •Void main()
- •Пример 7.5.4. Реализация Inf-приложения.
- •Void main()
- •7.6Реализация Inf-приложения иа языке c# Пример 7.6.1. Реализация Inf-приложения иа языке c#.
- •Int cost; // Стоимость компьютера
- •Int year; // Год изготовления
- •Inf.Enter();
- •Inf.Enter();
- •Inf.Show();
- •8.Управляемые данные и их использование
- •Void set(тип value)
- •Пример 8.1.2. Свойства в Java.
- •Import java.Io.*;
- •Пример 8.2.1. Создание и использование делегата.
- •Void main() // Главная функция программы
- •Пример 8.2.2. Использование делегата как параметра функции.
- •Void r(void) {Console::WriteLine ("r");}
- •Void main () // Главная функция программы
- •Void имя-функции ( void );
- •Пример 8.3.1. Событие и делегат.
- •Void main ()
- •Vold имя-функции-активизации()
- •Пример 8.3.2. Использование события.
- •Void GenerateEv() // Функция-генератор события
- •Void main()
- •Void GenerateEv (String л str) // Функция- генератор события
- •Void main ( )
- •06BeKTfirst клaccaUseEvпoлyчилcoбытиe one
- •Interface iEv
- •IE,HandlerEv (); // Выполнить обработчик
- •Void GenerateEv ( ) // Сгенерировать событие
- •Void main (void)
- •V{ oid FireConnectEvent (object sender, SourceEventArgs e)
- •Void FireConnectEvent (object sender, EventArgs args)
- •8.4. Уведомления и события в Java
- •8.4.1. Уведомления в Java
- •Void notifyObservers () - уведомить всех обозревателей данного наблюдаемого
- •Void notifyObservers (Object obj) - уведомить всех обозревателей данного на-
- •Void update(Observable observable. Object obj) - эта функция данного объекта
- •Import java.Util.*;
- •II Два наблюдателя и один наблюдаемый объект
- •Importjava.Util.*;
- •Importjava.Utll,*;
- •Importjava.Util.*;
- •Int num; // Номер уведомляющего объекта
- •8.4.2. События в Java
- •Import java.Utii.*;
- •Void DatePerformed (DataDate dd); // Обработчик
- •Int n; // Номер объекта-приёмника
- •Int num; // Номер объекта приёмника
- •Import cJHappenListerner.*;
- •Importjava.Uti).*;
- •Void performedHappen (HappenData hD);
- •Import cJHappenListerner.*; | | Импортировать библиотеку
- •9. Потоки и синхронизация их выполнения
- •9.1. Процессы
- •9.3. Потоки в Java
- •Int num; // Номер потокового объекта
- •2. Поскольку объявленному в классе cThread потоковому объекту thr типа
- •9.4. Потоковый объект, выдающий событие
- •If (lllfe) // Если потоковый объект не функционирует,
- •ImportJava,util.*;
- •If (!life) // Если потоковый объект не функционирует,
- •9.5. Поток получил событие из объекта
- •If (!life)
- •If (received)
- •Importjava.Utll.*;
- •If (lllfe)
- •If (received)
- •9.6. Синхронизация выполнения потоков
- •9.6.1. Операторы lock и synchronized
- •Int num; // Номер объекта
- •9.6.2. Связи между потоками
- •9.6.2.1. Связи меяеду потоками в Java
- •If(waiting)
- •9.6.2.2. Связи между потоками в c#
- •If (I moving)
- •9.6.2.1.1 Наязыке Java, отличаясьтолько применением функций монитора
- •10. Библиотека .Net Framework и библиотеки
- •10.1. Приложение
- •10.2. Классы, объекты и элементы приложения
- •Visual Studio .Net как библиотеки .Net Framework, так и пакетов языка Java
- •10.3. Простейшие приложения
- •Import java.Awt.*;
- •Void main ( )
- •10.3.1.1. Оказывается, класс Form сам наследует множество других классов,
- •10.4. Сообщения Windows, события и делегаты
- •X0.4.1. Обработка событий мыши на языке c#
- •Void OurMouseDown (object sender, MouseEventArgs args);
- •Vold maln ()
- •10.4.3. Обработка событий мыши на языке Java с использо-
- •10.4.4. Связь события с несколькими объектами на языке c#
- •10.5. Ещё раз о событиях и уведомлении в языке Java
- •10.5.1. Обработка событий элементов интерфейса пользовате-
- •ItemListener, KeyListener, MouseListener, MouseMotionListener, TextListener
- •10.5.2. Обработка событий мыши на языке Java, используя
- •Importjava.Awt.Event.*;
- •Importjava.Awt.*;
- •Import java.Awt.Event.*;
- •Importjava.Awt.*;
- •Import java.Awt.Event.*;
- •10.5.3. Обработка событий мыши на языке Java, используя классы адап-
- •Importjava.Awt.*;
- •Importjava.Awt.Event.*;
- •Importjava.Awt.*;
- •Importjava.Awt.Event.*;
- •10.5.4. Обработка событий мыши на языке Java, используя внутренние
- •Import java.Awt.*;
- •Import java.Awt.Event.*;
- •Importjava.Awt.*;
- •Import java.Awt.Event.*;
- •10.5.5. Обработка события закрытия окна
- •Import java.Awt.*;
- •Import java.Awt.Event.*;
- •10.6. Графика
- •10.6.1. Графические объекты
- •15, 15, 60, 70); // Нарисовать эллипс
- •Vold maln ()
- •10.7. Событие Paint и его обработчик
- •Int len; // Текущая длина массива points
- •Void OurMouseDown (object sender, MouseEventArgs arg)
- •Invalidate ( ); // Перерисовать
- •Int len; // Текущая длина массива points
- •Import java.Awt.Event.*;
- •10.8. Управляющие элементы
- •1 «Button j 1
- •Import java.Awt,event.*;
- •Int n; // Индекс цвета
- •10.8.4,10.8.5 И 10.8.6, а также программа, поэтапно разрабатываемая в разде-
- •Invalidate ();
- •Importjava.Awt.*;
- •Import java.Awt.Event.*;
- •Importjava.Util.*;
- •10.9. Дочерние окна
- •Int n; // Индекс массива colors
- •IiTipOrt jav'a.Avvt. •)
- •Import java.Awt.Event.*;
- •Int n; // Индекс цвета
- •Virtual void OnPaint (PaintEventArgs л arg) override // Перерисовать область
- •10.10.3, В котором вызываются две функции.
- •Importjava.Awt.*;
- •Importjava.Awt.Event.*;
- •It); // Подписать обработчик
- •Void main ( )
- •11.1. Программа с точки зрения пользователя
- •11.2. Объектное представление программы
- •11.3. События, потоки и их синхронизация
- •11.4. Поэтапная разработка программы
- •11.4.1. Первый этап. Разработка класса Warehouse
- •4Cxrt()
- •Int partLoad; // Выгружаемая или загружаемая порция
- •If(full) return false; // Полный грузовик не загружать
- •Invalidate ();
- •Importjava.Awt.*;
- •Importjava,utll.*;
- •Void notifyObs (WarehouseEventArgs arg)
- •Int partLoad; // Получаемая или помещаемая порция груза
- •If (full) return false;
- •If(full) return false; // Полный грузовик не загружать
- •Void Change ( )
- •Invalidate ();
- •Importjava.Awt.*;
- •Importjava.Util.*;
- •Import cjWarehouse.*
- •11.4.2. Второй этап. Разработка классов ContrlRegion и Lorry
- •11.4.2.1, А сам класс представлен в примере 11.4.2.1. Класс ContrlRegion язы-
- •Importjava.Awt.Event.*;
- •Void Work ( ) // Выполнить работу
- •Int number;
- •Int number;
- •Int timePeriod;
- •Int y; // Координата y пути грузовика
- •Invalidate ();
- •11.4.3. Третий этап. Разработка приложения csLorryAndWarehouse
- •4IorryAndWa rho uses()
- •4Main()
- •Int y; // Координата y пути грузовика
- •Invalidate ( );
- •If(lorry.GetFull())
- •If(lorry.GetLeftRight()) g.SetColor(Color.Red);
- •Int numLorry; // Номер грузовика
- •Void But_Run (Object Ло, EventArgs ле)
- •Void main ( )
- •11.4.4. Четвертый этап. Удаление ресурса
- •Int number;
- •If(!lorry.Running)lorry.Run ( );
- •12. Зачетные задачи
- •12.1. Задание 1
- •Importjava.Awt.*;
- •Import Java.Awt.Event.*;
- •Importjava.Util.*;
- •12.2. Задание 2
- •Importjava.Awt.*;
- •Importjava.Awt.Event,*;
- •Importjava.Util.*;
- •Invalidate ( );
- •12.3. Задание 3
- •Importjava.Awt.*;
- •Import java.Awt.Event.*;
- •Importjava.Util.*;
- •If(bool) Start ();
- •If(lrunnlng)
- •Void BallFunc ()
- •Void ThrFunc ( )
- •Vold OnButAdd (object obj, EventArgs arg)
- •Void HandlerEv ( )
- •Invalidate ( );
- •12.4. Задание 4
- •If(reg.R.Contains(p) && !inRect)
- •If(!reg.R,Contains(p) && lnRect)
- •Void OnButAdd (object obj, EventArgs arg)
- •Void HandlerEv ( )
- •Invalidate ();
- •Importjava.Awt.*;
- •Importjava.Awt.Event.*;
- •Importjava.Utll.*;
- •Int w, int h, Color c, Wind wind)
- •If(reg.R.Contains(p) && !lnRect)
- •If(!reg.R.Contains(p) && inRect)
- •If(d.GetDel())
- •13. Ещё о важном в объектно-ориентирован-
- •13.1. Виртуальные функции
- •13.1.1. Преобразование типов
- •Void f ( ) {cout « "ca:: f" « endl;}
- •Void main ( )
- •Void f ()
- •Void main ( )
- •Vold f ( )
- •Vold Do (ca* pCa)
- •Void main ( )
- •13.1.2, Виртуальные функции
- •Virtual void f ( ) {Console::WriteLine ("a:: f");}
- •Void f ( ) {Console::WriteLine ("b:: f");}
- •Void f ( ) {Console::WrlteLlne ("c:: f");}
- •Vold f ( ) {Console::WrlteLlne("b:: f");}
- •Vold Do (a* pA)
- •Void main ()
- •13.1.3. Виртуальные функции, используемые в книге
- •13.2. Абстрактные классы и функции
- •13.2.1. Абстрактные функции
- •13.2.2. Абстрактные классы
- •Void f ( ) {Console::WriteLine ("b:: f");}
- •Vold f ( ) {Console::WriteLine ("d:: f");}
- •Vold main ( )
- •13.2. Нововведения в языке c#
- •13.2.1.Делегаты и события
- •Iorry.Run ( );
- •13.3.2. Статические классы
- •Int partLoad; // Выгружаемая или загружаемая порция
- •If(!full)
- •Invalidate ( );
- •Int number;
- •Int y; // Координата y пути грузовика
- •Iorry.Stop ();
- •If(llorry.Running)lorry.Run ( );
- •Invalidate ( );
- •1) Создать новый проект:
- •Value 28, 30
- •Value type 34
- •Visual Studio .Net и Edipse.
- •420111, Казань, Дзержинского, 3. Тел.: 292-24-76.
1) Создать новый проект:
а) выбрать меню File/New/Project\ появилась панель New Project
б) на вкладке Project Types панели выделить строку Visual C++/CLR-,
в) на вкладке Templates панели выделить CLR Console Application\
г) используя Location и Browse панели, выбрать каталог, в котором
разместятся файлы проекта;
д) в поле Name панели указать имя проекта (например, ccTempl);
е) нажать кнопку OK\
ж) появилось окно с текстом программы, выдающей на консоль слово
Hello World-.
|| ccTempl.cpp : maln projectfHe.
#include "stdafx.h"
using namespace System;
lnt main (array<System::Strlng ^> ^args)
{
Console::WriteLlne (L"Hello World");
return 0;
>
2) Изменить этот файл, создав требуемый файл .cpp.
3) Компилировать программу и получить файл .exe, выполнив команду
Build/Build Solution.
При наличии ошибок скорректировать программу и заново выполнить этот
пункт 3. При отсутствии ошибок появится строка
Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped
Перейти к следующему пункту 4.
4) Исполнить приложение, выполнив команду Debug/Start Without Debugging.
Появилось консольное окно с результатами выполнения приложения.
Консольное С#-приложение
Для создания и выполнения консольного Cff-приложения после запуска
Visual Studio выполнить __________действия:
1) Создать новый проект:
а) выбрать меню File/New/Project; появилась панель New Project
б) на вкладке Project Types панели выделить строку Visual C#;
в) на вкладке Templates панели выделить Console Application\
г) используя Location и Browse панели, выбрать каталог, в котором
разместятся файлы проекта;
д) в поле Name панели указать имя проекта (например, csTempl);
е) нажать кнопку OK\
ж) появилось окно с текстом программы, выдающей пустое консольное
окно:
using System;
using System.Collections.Generic;
using System.Text;
namespace csTempl
{
class Program
{
static void Main (string[] args)
{
>
>
>
2) Изменить этот файл, создав требуемый файл .cs.
3) Компилировать программу и получить файл .exe, выполнив команду
Build/Build Solution.
При наличии ошибок скорректировать программу и заново выполнить этот
пункт 3. При отсутствии ошибок появится строка
Rebuild All: 1 succeeded, 0 falled, 0 skipped
Перейти к следующему пункту 4.
4) Исполнить приложение, выполнив команду Debug/Start Without Debugging.
Появилось консольное окно с результатами выполнения приложения.
Консольное ^приложение
Для создания и выполнения консольного У^приложения после запуска
Visual Studio выполнить действия:
1) Создать новый проект:
а) выбрать меню File/New/Project; появилась панель New Project
б) на вкладке Project Types панели выделить строку Vkual J#;
в) на вкладке Templates панели выделить Console Application\
г) используя Location и Browse панели, выбрать каталог, в котором
разместятся файлы проекта;
д) в поле Name панели указать имя проекта (например, cjTempl);
е) нажать кнопку OK;
ж) появилось окно с текстом программы, выдающей пустое консольное
окно:
package cjTemp2;
/**
* Summary description for Program
* /
public class Program
{
public static void main (String[] args)
{
//
// TODO: Add code to start application here
// >
>
2) Изменив этот файл, создать требуемый файл .jsl.
3) Компилировать программу и получить файл .exe, выполнив команду
Build/Build Solution.
При наличии ошибок скорректировать программу и заново выполнить этот
пункт 3. При отсутствии ошибок появится строка
Build: 1 succeeded or up-to-date, 0 failed, 0 skipped
Перейти к следующему пункту 4.
4) Исполнить приложение, выполнив команду Debug/Start Without Debugging.
Появилось консольное окно с результатами выполнения приложения.
С#-библиотека
Для создания DLL библиотеки с классом на языке C# после запуска Visual
Studio выполнить действия:
1) Создать новый проект:
а) выбрать меню File/New/Project; появилась панель New Project
б) на вкладке Project Types панели выделить строку Visual C#;
в) на вкладке Templates панели выделить Class Library;
г) используя Location и Browse панели, выбрать каталог, в котором
разместятся файлы проекта;
д) в поле Name панели указать имя библиотеки (например,
csClasslLib);
е) нажать кнопку OK;
ж) появился сгенерированный класс Classl:
using System;
using System.Collect!ons.Generlc;
using System.Text;
namespace csClasslLib
{
public class Classl
{
>
>
2) Изменив этот класс, создать требуемый класс или требуемые классы.
3) Компилировать программу и получить файл .dll выполнив команду
Build/Build Solution.
При наличии ошибок скорректировать программу и заново выполнить этот
пункт 3. При отсутствии ошибок появится строка
Build: 1 succeeded ог up-to-date, 0 failed, 0 skipped
В каталоге Debug проекта появился .dll файл библиотеки.
4) Библиотека создана, имеет пространство имён и содержит помещённый в
неё класс. Дополнительно в эту библиотеку можно поместить иные классы и
интерфейсы с обязательным указанием доступа public для каждого из них,
чтобы они были доступны вне библиотеки.
1#-библиотека
Для создания DLL библиотеки с классом на языке J# после запуска Visual
Studio выполнить действия:
1) Создать новый проект:
а) выбрать меню File/New/Project; появилась панель New Project
б) на вкладке Project Types панели вьщелить строку Visual J#;
в) на вкладке Templates панели выделить Class Library;
г) используя Location и Browse панели, выбрать каталог, в котором
разместятся файлы проекта;
д) в поле Name панели указать имя библиотеки (например,
cjClasslLib);
е) нажать кнопку OK;
ж) появился сгенерированный класс Classl, размещённый в пакете
cjClasslLib:
package pjClasslLib;
!**
* Summary description for Classl
*/
public class Classl
{
public Classl ()
<
//
// TODO: Add constructor logic here
//
>
>
2) Изменив этот класс, создать требуемый класс.
3) Компилировать программу и получить файл .dll выполнив команду
Build/Build Solution.
При наличии ошибок скорректировать программу и заново выполнить этот
пункт 3. При отсутствии ошибок появится строка
Bulld: 1 succeeded or up-to-date, 0 failed, 0 skipped
4) Библиотека создана, имеет имя пакета и содержит помещённый в неё
класс.
Связывание консольного С#-приложение с библиотекой
Для создания консольного С#-приложения, связанного с библиотекой, после
запуска Visual Studio выполнить действия:
1) Создать новый проект для консольного приложения, как рассказано ранее,
или открыть уже созданный проект консольного приложения (например,
csTemp2).
2) Изменить файл консольного приложения (например, csTemp2), добавив в
него строку, указывающую пространство имён используемой библиотеки
(допустим, csClasslLib), например, так:
using System;
using System.Collections.Generic;
using System.Text;
using csClasslLib;
namespace csTemp2
{
class Program
{
static void Main (string[] args)
{
// Создать объект класса Classl из библиотеки
csClasslLib.Classl c l l = new csClasslLib.Classl ();
// использовать объект cll надлежащим образом
>
>
>
3) Сообщить приложению, где находится библиотека.
а) выполнить команду Project/AddReference...
б) в появившемся диалоговом окне выбрать вкладку Projects;
в) используя Browse..., найти требуемую библиотеку, например, библио-
теку csClasslLib.dll в каталоге.. csClasslLib /debug/csClasslLib.dll;
г) добавить найденную библиотеку, нажав кнопку Open, а затем - кнопку
ОК.
4) Получить объединённый файл .exe, выполнив команду Build/Build
Solution.
5) Исполнить приложение, выполнив команду Debug/Start Without Debugging.
Появилось консольное окно с результатами выполнения консольного при-
ложения совместно с подключённой библиотекой
Связывание консольного 1#-приложение с библиотекой
Для создания консольного ^#-приложения, связанного с библиотекой, после
запуска Visual Studio выполнить действия:
1) Создать новый проект для консольного приложения, как показано ранее в
этом разделе, или открьггь уже созданный проект (например, cjTemp2).
2) Изменить файл консольного приложения (например, cjTemp2), добавив в
него строку, указывающую пространство имён используемой библиотеки
(допустим, csClasslLib), например, так:
uslng System;
using System.Collections.Generic;
using System.Text;
import csClasslLlb.Classl;
{n amespace csTemp2
class Program
{
static void Main (string[] args)
t k
// Создать объект класса Classl из библиотеки
csClasslLib.Classl cll = new csClasslLib.Classl ( );
// использовать объект cll надлежащим образом
>
>
>
3) Сообщить приложению, где находится библиотека.
а) выполнить команду Project/AddReference...
б) в появившемся диалоговом окне выбрать вкладку Projects;
в) используя Browse..., найти требуемую библиотеку, например, библио-
теку cjClasslLib.dll в каталоге.. cjClasslLib/bin/Debug/cjClasslLib.dll;
г) добавить найденную библиотеку, нажав кнопку Open, а затем - кнопку
ОК.
4) Получить объединённый файл .exe, выполнив команду Build/Build
Solution.
5) Исполнить приложение, выполнив команду Debug/Start WithoutDebugging.
Появилось консольное окно с результатами выполнения консольного при-
ложения совместно с подключённой библиотекой.
Использование Eclipse
Рассматривается последовательность действий в среде Eclipse для соз-
дания Java-приложений.
Создание интерфейса
Для создания интерфейса после запуска Eclipse выполнить действия:
1) Создать новый проект:
2) а) выбрать меню File/New/Java Project; появилась панель New Java Project;
б) в поле ProjectName панели ввести имя проекта (например, ITempl);
в) нажать кнопку Finish; В перечне проектов появится проект ITempl;
3) Создать пакет:
а) выделить (высветить) имя проекта;
б) выбрать меню File/New/Package; появилась панель New Java
Package;
в) в поле Name панели ввести имя пакета (например, ITemplPak);
в) нажать кнопку Finish; В директории проекта появилось имя пакета
ITemplPak;
4) Создать интерфейс:
а) выделить (высветить) имя проекта;
б) выбрать меню File/New/Interface; появилась панель New Java Interface;
в) в поле Name панели ввести имя интерфейса (например, Itl);
г) в поле, используя Browse, указать имя пакета (например,
ITemplPak);
в) нажать кнопку Finish; В окне появился сгенерированный интерфейс:
package ITemplPak;
public interface Itl {
>
5) Заполнить этот интерфейс требуемыми элементами, например:
package ITemplPak;
public interface Itl {
lnt Get ();
>
Создание класса без функции mainO
Для создания класса после запуска Eclipse выполнить действия:
1) Создать новый проект:
2) а) выбрать меню File/New/Java Project; появилась панель New Java Project;.
б) в поле ProjectName панели ввести имя проекта (например, Classl);
в) нажать кнопку Finish; В перечне проектов появится проект Classl;
3) Создать пакет:
а) выделить (высветить) имя проекта;
б) выбрать меню File/New/Package; появилась панель New Java
Package;
в) в поле Name панели ввести имя пакета (например, ClassIPak);
в) нажать кнопку Finish; В директории проекта появилось имя пакета
ClasslPak;
4) Создать класс:
а) выделить (высветить) имя проекта;
б) выбрать меню File/New/Class; появилась панель New Java Class;
в) в поле Name панели ввести имя класса (например, Classl);
г) в поле Package, используя Browse, указать имя пакета (например,
ClasslPak);
в) нажать кнопку Finish; В окне появился сгенерированный класс:
package ClasslPak;
public class Classl <
>
5) Реализовать этот класс требуемым образом.
Соединение интерфейса с классом
Для создания класса с интерфейсом выполнить следующие действия:
1) Изменить класс, указав наследование интерфейса, например:
package ClasslPak;
import ITemplPak.Itl;
pubiic class Classl implements Itl{
int Get ( ) {return 10;>
>
2) Связать класс с интерфейсом:
а) нажав на правую клавишу мыши на имени проекта, выбрать в выпа-
дающем меню Properties\ появилась панель Properties for (classl),.
б) выделить Java Build Path и Projects-,
в) нажать кнопку Add и в появившейся панели Required Project Selections
выделить проект интерфейса (например, ITempl);
г) нажать кнопку OK на панели Required Project Selection;
д) нажать кнопку OK на панели Properties for (classl);
Создание класса, содержащего функцию mainO
Для создания класса после запуска Eclipse выполнить действия:
6) Создать новый проект:
7) а) выбрать меню File/New/Java Project; появилась панель New Java Project;.
б) в поле Project Name панели ввести имя проекта (например, Class2);
в) нажать кнопку Finish; В перечне проектов появится проект CIass2;
8) Создать пакет:
а) выделить (высветить) имя проекта;
б) выбрать меню File/New/Package; появилась панель New Java
Package;
в) в поле Name панели ввести имя пакета (например, Class2Pak);
r) нажать кнопку Finish; В директории проекта появилось имя пакета
ClasslPak;
9) Создать класс:
а) выделить (высветить) имя проекта;
б) выбрать меню File/New/Class; появилась панель New Java Class;
в) в поле Name панели ввести имя класса (например, Class2);
г) в поле Package, используя Browse, указать __________имя пакета (например,
Class2Pak);
д) в поле Wich method stubs do you like to create? выбрать public static
void main(String[] args);
е) нажать кнопку Finish; В окне появился сгенерированный класс:
package Class2Pak;
public class Class2 {
!**
* @рагвт args
*/
public static void main (String[] args) {
// TODO Auto-generated method stub >
10) Заполнить этот класс требуемым.
Соединение класса с классом (или интерфейсом)
Для соединения класса с классом выполнить следующие действия:
1) Изменить надлежащий класс (например, класс Class2), указав им-
портирование другого класса (например, класса Classl пакета
ClasslPak):
package Class2Pak;
Import ClasslPak.Classl;
public class Class2 <
public static void main (String[] args) {
// Создание и применение класса подключённого пакета
Classl cll= new Classl ( );
System.out.println (cll.Get());
>
2) Связать класс (Class2) с требуемым классом (Classl):
а) нажав на правую клавишу мыши на имени проекта выбрать в выпа-
дающем меню Properties', появилась панель Properties for (class2)\.
б) выделить Java Build Path и Projects',
в) нажать кнопку Add и в появившейся панели Required Project Selections
выделить проект подсоединяемого класса(например, Classl);
г) нажать кнопку OK на панели Required ProjectSelection;
д) нажать кнопку OK на панели Properties for (class2');
Перечень примеров программ
Пример 2.2.1, Описание класса объекта-шара на языках C++/CLI,
C# и Java 15
Пример 2.2.2. Создание и использование объектов 18
Пример2.4.1.КлассССо1Ва11, наследуемыйклассСВаН 22
Пример 2.4.2. Использование функций объектов 24
Пример 3.5.1. Использование стека, неуправляемой и управляемой
куч на языке C++/CLI 31
Пример 4.2.1. Консольный ввод и вывод на языках C++/CLI, Javan
C# 36
Пример 4.3.1. Объявление переменной в середине блока 40
Пример 4.4.1. Использование операторов new, gcnew и delete в
языке C++/CLI 41
Пример 4.4.2. Использование оператора new в языках Java и C# 43
Пример 4.5.1. Описание одномерных неуправляемых массивов на
языке C++/CLI 48
Пример 4.5.2. Описание одномерных массивов на языке Java и C# 49
Пример 4.5.3. Создание массивов объектов на языке C++/CLI 50
Пример 4.5.4. Создание массивов объектов на языке Java 52
Пример 4.6.1. Описание структур в языках C++/CLI и C# 53
Пример 4.7.1. Использование ссылочной переменной 54
Пример 4.8.1. Перегруженные функции swap (int &, int &) и swap
(bool &, bool &) 55
Пример 4.9.1. Задание значений параметров функции по умолчанию 56
Пример 4.10.1. Различные способы передачи и получения данных 57
Пример 5.1.1. Описание класса и создание его объектов 60
Пример 5.2.1. Описание функций вне класса 64
Пример 5,3=1: Области видимости 66
Пример 5.4.1. Объект содержит объект другого класса 67
Пример 5.5.1. Перегруженные конструкторы 70
Пример 5.6.1. Статические функции 72
Пример 6.2.1. Программа, использующая порождение public 78
Пример 6.4.1. Выполнение конструкторов 81
Пример 6.5.1. Сокрытые переменные и функции 84
Пример 6.6.1. Наследование интерфейса в C# и C++/CL1 87
Пример 6.7.1. Упаковка и распаковка типов значений 90
Пример 7.5.1. Реализация класса CComputer 100
Пример 7.5.2. Реализация класса CShop 101
Пример 7.5.3. Реализация класса CData 103
Пример 7.5.4. Реализация Inf-приложения 104
Пример7.6.1.Реализация Inf-приложения на языке C# 107
Пример 8.1.1. Свойства в C++/CLI и C# 112
Пример 8.1.2. Свойства в Java 113
Пример 8.2.1. Создание и использование делегата 117
Пример 8.2.2. Использование делегата как параметра функции 119
Пример8.3.1.Событиеиделегат 123
Пример 8.3.2. Использование события 128
Пример 8.3.3. Широковещательное событие 130
Пример 8.3.4. Связь между объектами посредством событий 134
Пример 8.3.5. Событие с данными 138
Пример 8.3.6. Событие типа EventHandler 140
Пример 8.4.1.1. Обозреватель и наблюдаемый объект 144
Пример 8.4.1.2. Два обозревателя и один наблюдаемый объект 145
Пример 8.4.1.3. Один обозреватель и два наблюдаемых объекта 147
Пример 8.4.1.4. Два однотипных объекта уведомляют друг друга 148
Пример 8.4.2.1. Реализация источника и приёмника события 151
Пример8.4.2.2.Реализациякласса иинтерфейсасобытия 153
Пример 8.4.2.3. Использование библиотеки с классом и
интерфейсом события 156
Пример 9.2.1. Два параллельно выполняющихся потоковых о&ьекта
наязыкеС# 162
Пример 9.3.1. Два параллельно выполняющихся потоковых объекта
на языке Java 168
Пример 9.4.1. Потоковый объект, выдающий событие 172
Пример 9.4.2. Потоковый объект, уведомляющий обозреватель 178
Пример 9.5.1. Поток получил событие из объекта 180
Пример 9.5.2. Поток получил уведомление из наблюдаемого
объекта 186
Пример 9.6.1.1. Оператор lock и потоки на языке C# 189
Пример 9.6.1.2. Оператор synchronized и потоки на языке Java 192
Пример 9.6.2.1. Приостановка и возобновление потока в Java 196
Пример 9.6.2.2.1. Monitor и потоки 199
Пример 9.6.2.2.2. Приостановка и возобновление потока в C# 201
Пример 9.6.2.3.2. Приостановка и возобновление потока в C++/CLI 203
Пример10.3.1.С#. npocToeWindows-пршюжение.Дваварианта 207
Пример 10.3.2. Java. Простоеоконноеприложение 208
Пример 10.33. C++/CLI. npocTOeWindows-приложение 209
Пример 10.4.1. Программа обработки события мыши на C# 212
Пример 10.4.2. Программа обработки события мыши на C++/CLI 215
Пример 10.4.3. Программа обработки события мыши на Java 216
Пример 10.4.4. Связь события с несколькими объектами 217
Пример 10.5.2. Обработка событий мыши на Java, используя
интерфейс MouseListener 221
Пример 10.5.3.1. Обработка событий мыши на Java, используя
классы адаптеров 225
Пример 10.5.4.1. Обработка событий мыши на Java, используя
внутренние классы адаптеров 227
Пример 10.5.4.2. Обработка событий мыши на Java, используя
внутренний анонимный класс 228
Пример 10.5.5.1. Обработка события закрытия окна 229
Пример 10.6.1. Использование графического объекта 238
Пример 10.7.1. Программа рисования ломаной линии 241
Пример10.8.1. Программа суправляющимиэлементаминаязыке
C# 249
Пример10.8.2. Программа суправляющимиэлементаминаязыке
Java 251
Пример 10.8.3. Программа с управляющими элементами на языке 253
C++/CLI
Пример 10.8.4. Программа с управляющим элементом типа
UserControl на языке C# с рисованием в потоке. 257
Пример 10.8.5. Программа с управляющим элементом типа
UserControl на языке C# с применением потока и функции OnPaint() 259
Пример 10.8.6. Программа с управляющим элементом типа Panel
на языке Java с применением потока и функции paint() 261
Пример 10.9.1. Программа с дочерними окнами 263
Пример 10.9.2. Программа с дочерними окнами на языке Java(J#). 265
Пример 10.9.3. Программа с дочерними окнами на языке C++/CLI. 267
Пример 10.10.1. Исключение не обрабатывается 269
Пример 10.10.2. Обрабатка DivideByZeroException исключения 271
Пример 10.10.3. Вложение исключений 272
Пример 10.10.4. Обработчик кнопки использует исключение 273
Пример 11.4.1.1. Класс Warehouse 284
Пример 11.4.1.2. Приложения csTestWarehouse и cjTestWarehouse 292
Пример 11.4.2.1. Класс ContrlRegion 299
Пример11.4.2,2. KjiaccLorry 301
Пример 12.4.2.3. Приложение csTestLorry 309
Пример 11.4.3.1. npwKHKeHHecsLorryAndWarehouse 316
Пример11.4.3.2. Класс Lorry с функцией Dispose() 332
Пример 11.4.3.3. Удаление объекта класса Lorry с функцией
Dispose() 336
Пример 13.1.1.1. Приведение типов классов 3^8
Пример 13.1.1.2. Вызов функций по типу объекта 3^0
Пример 13.1.1.3. Обращение к объектам через параметр базового
класса ъ1~^
Пример 13.1.2.1. Виртуальные функции 31^
Пример 13.1.2.2. Объявление виртуальной функции в базовом
классе 376
Пример 13.2.2.1. Абстрактные классы и функции Ъ$2
Пример 13.2.2.1. Абстрактный класс с событием, свойством,
обычной функцией и интерфейсом 385
Приложение 4. LorryAndWarehouse-приложение на языке Java 3^2
Приложение 5. LorryAndWarehousc-приложение на языке C# 404
Предметный указатель
ActionEvent 220
ActionListener 221
actionPerformed() 221
Add () 246
add() 247
addActionListener() 248
addMouseListener() 224, 227
addObserver () 143
addWindowListener() 229
AdjustimentEvent 220
AdjustmentListener 221
API функции 160
Application 208
ArithmeticException 272
Array 48
array 45
ArrayList 153
BackColor 248
base 24, 81
Boolean 39,91
booleanValue() 91
BorderLayout 253
Bottom 232
boxing35,89
Brush 235
BufferedReader 38
Button 246,247
Byte 39
C + + 1 0
C++.NET 11
C++/CLI 11
C # 1 0
calIoc() 40
catch 248
Character 39,91
charValue() 91
class 15,60
Clear () 246
cIearChange() 143
Click 247
CLR27
Color 233
ComponentAdapter 224
ComponentEvent 220
ComponentListener 221,224
ContrlRegion 297
Console 35
ContainerAdapter 224
ContainerListener 221,224
Contains() 232
Control 207,246
ControlCollection 246
Controls 246
Convert 36, 39
countObservers () 143
CreateGraphics () 231
delegate 112
Delegate 112
delegate 28
delete 30,40,70
deleteObserver () 143
deleteObservers () 143
descriptor 30,34,40
DivideByZeroException 269
DLL библиотека 160
Double 39,91
doubleValue() 91
DrawEUipse () 236
DrawLine () 242
drawLine() 237
drawOval() 237
drawRect() 237
DrawRectangle () 236
DrawString () 236
Enter() 198
enum 53
event 30,127
event 122
event 29
EventArgs 137 Int32 90
EventHandler 140, 248 Invalidate () 240
Exception 37,248 Italic 236
exit() 229, 244 ltemEvent 220
Exit() 198 ItemListener 221
extends 23, 80,87
Java 10
Fil!Ellipse () 237 JVM 10,27
fillOval() 237
fIllRect() 237 KeyAdapter 224
finally 270 KeyEvent 220
Float 39, 71 KeyListener 221, 224
floatValue() 91
FlowLayout 253 Length 50
FocusAdapter 224 lengh 48,50
FocusEvent 220 Location 248
FocusListener 221,224 lock 188
Font 236 Long9
FontStyle 236 longValue() 91
Form 207,210 Lorry 299
Frame 207,211 LorryAndWarehouse-приложение 277
free 40
FromArgb () 233 Main() 161
malloc() 40
GC 29 managed code 28
gc 28 managed heap 34
gcnew 30,40 MessageBox218
get 111 Monitor 198
get() 152 MouseAdapter 224, 227
getGraphics() 231 mouseCIicked() 221
getLocation() 248 mouseClosed() 221
GDI 231 MouseDown 212
Graphics 236 mouseDown() 216,223
GridLayout 253 mouseEntered() 221
MouseEvent 220
hasChanged () 143 MouseEventArgs 212
Height 232 mouseExited() 221
MouseEventHandler 212
implements 80, 87 MouseListener 221,224
inline 60 MouseMotionAdapter 224
InputEvent 220 MouseMotionListener 221
Integer 38, 91,273 mousePressed() 224
interface 75,86 mouseReleased() 221
InterruptedException 168,268 MSIL 11,27
intValue() 91
new 40 Runnable 168
nogc 28
notify() 188, 195 set 111
notifyAU() 188,195 setChanged () 143
notifyObservers() 143,220 setColor() 237
NumberFormatException 273 setFont() 237
0bject210
setLayOut() 253
setLocation() 248,253
object 210 setSize() 208,248
Observable 142 setTitle() 208
Observer 142 Short 39
Offset 0 231,232 Show () 208
OnMouseDown() 213 show() 208
OnPaint () 240,241 Size 207
override 240, 366 size() 327
Sleep () 161
Paint 240 sleep() 161
paint() 240,241 SolidBrush 235
PaintEventArgs 240 Start() 166
PaintEventHandler 240 start() 168
Panel 256 stdafx.h 42
parseInt() 38, 39, 273 struct 53
Pen 234 StreamReader 38
Point 231 super 23,81
println() 16,17,38 Suspend () 166
private 15,60 ATL 26
property 30,111 java.lang 26
protected 76 java.util 26
proxy 35 java.io 26
public 15, 16,60 MFC 26
Puls() 198 NET.Framework 26
PulsAll() 198 STL 26
synchronized 189
Read () 35
ReadLine () 35 Text 207
readLine () 38 TextBox 246,248
Rectangle 232 TextEvent 220
ref 30,57 TextField 247,248
reference type 34 TextLength 248
Remove () 246 TextListener 221
remove() 151,247 this 71
repaint() 240 Thread 161
Resume () 166 thread-primary 160
Run() 207 -work 160
run() 168 ThreadStart 161
ToIntl6() 39
ToInt32() 36, 39, 101
ToInt64() 39
ToBoolean 39
ToByte() 39
ToChar() 39
ToDecimal() 39
ToDouble() 39
ToSingle() 39
ToString () 39
toString () 39
throw 101,268
try-catch 38, 101,268
try-catch-finally 269
TryEnter() 198
UML 19
unmanaged heap 34
update() 142
UserControl 256
using 32
