Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Билет 2. 1. Объявление и реализация классов на языке Паскаль.




1. Объявление и реализация классов на языке Паскаль.

Для объявления классов (объектных типов) используется зарезервированное слово class. Определим некоторый класс графических примитивов TFigure следующим образом:

TFigure = class

fColor: Byte;

fThickness: Byte;

fCanvas: TCanvas;

procedure SetColor(Value: Byte);

procedure SetThickness(Value: Byte);

procedure PrepareCanvas;

end;

По принятому соглашению имена классов начинаются с заглавной буквы «T», имена полей данных начинаются с буквы «F», и поля класса объявляются до методов. Класс объединяет данные, представленные атрибутами (полями) и алгоритмы (методы) по их обработке.

В примере к полям данных класса относятся: поле fColor, хранящее код цвета, поле fThickness, задающее толщину линий и поле fCanvas, представляющее полотно, на котором будет происходить отображение графических примитивов.

Методы класса определяют действия, выполняемые над данными. Их совокупность характеризует функциональный аспект поведения класса. Методы представляют собой процедуры и функции, принадлежащие классу. К методам класса относится метод PrepareCanvas, выполняющий подготовку полотна к работе и два метода задания значений полей данных – SetColor и SetThickness.

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

Для окончательного оформления шаблона требуется поместить класс в интерфейсный раздел модуля и дать реализацию всех методов:

unit figures;

Interface

Type

TFigure = class

fColor: Byte;

fThickness: Byte;

fCanvas: TCanvas;

procedure SetColor(Value: Byte);

procedure SetThickness(Value: Byte);

procedure PrepareCanvas;

end;

Implementation

procedure TFigure.SetColor(Value: Byte);

Begin

If fColor <> Value then

fColor:=Color;

end;

procedure TFigure.SetThickness(Value: Byte);

Begin

If fThickness <> Value then

fThickness:=Value;

end;

procedure TFigure.PrepareCanvas;

Begin

{ Подготовка полотна для рисования }

end;

end.

Методы SetColor и SetThickness выполняют присвоение внутреннему полю fColor и fThickness значения в том случае, если текущее значение отличается от передаваемого. К полям класса никогда не следует обращаться напрямую, а только посредством специальных методов, обеспечивающих корректность выполнения операции присваивания.

Теперь объявим переменную f класса TFigure:

Var

f: TFigure;

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

f:=TFigure.Create;

Конструктор не объявлен в классе TFigure, однако присутствует в нем благодаря наследованию от класса TObject. В результате будет выделена область памяти в размере, необходимом для хранения объекта f. Обратите внимание, конструктор вызывается с помощью ссылки на тип, а не на экземпляр типа, в отличие от методов, которые всегда вызываются с помощью ссылки на экземпляр. Связано это с тем, что объект f на момент вызова конструктора еще не создан.

После создания объекта с ним можно работать:

uses figures;

Var

f: TCircle;

Begin

f:=TCircle.Create;

f.SetColor($FF);

f.SetThickness(1);

f.PrepareCanvas;

f.Free;

end.

После выполнения методов объект f следует удалить, чтобы он не занимал места в памяти. Удаление выполняет метод Destroy, определенный в классе TObject, но лучше использовать Free, т.к. он инкапсулирует вызов Destroy: в начале определяется, существует ли объект и только затем выполняется вызов Destroy. В противном случае метод Free ничего не делает.

Класс Figure можно несколько модифицировать. Например, можно явно добавить к методам конструктор Create с помощью зарезервированного слова constructor и деструктор Destroy с помощью зарезервированного слова destructor:

TFigure = class

...

constructor Create; virtual;

destructor Destroy; override;

end;

В конструкторе присваиваются полям начальные значения и создается объект полотна:

constructor TFigure.Create;

Begin

fColor:=$FF;

fThickness:=1;

fCanvas:=TCanvas.Create;

end;

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

destructor TFigure.Destroy;

Begin

{ Освобождение ресурсов, используемых в работе объекта }

fCanvas.Free;

end;

 

2. Интерфейс. Пользовательский интерфейс. Классификация пользовательских интерфейсов.

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

Пользовательский интерфейс состоит из множества составляющих, таких как:

· набор задач пользователя, которые он решает при помощи системы

· используемая системой метафора (например, рабочий стол в MS Windows и т.п.)

· элементы управления системой

· навигация между блоками системы

· визуальный (и не только) дизайн экранов программы.

Структура и классификация пользовательских интерфейсов

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

В настоящее время оформилось два принципиально различных подхода к организации ПИ. Первый подход состоит в предоставлении пользователю командного языка, в котором запуск программ оформлен в виде отдельных команд. Этот подход известен как интерфейс командной строки (Command Line Interface - CLI).

Альтернативный подход состоит в символическом изображении доступных действий в виде картинок – икон (icons) на экране и предоставлении пользователю возможности выбирать действия при помощи мыши или другого координатного устройства ввода. Этот подход известен как графический пользовательский интерфейс (Graphical User Interface - GUI). Один из подклассов GUI (двухмерный) принято обозначать аббревиатурой WIMP (Windows-Icons-Menus-Pointing device), что отражает задействованные интерактивные сущности - окна, пиктограммы, меню и позиционирующее устройство (обычно мышь).

Аргументы в пользу CLI

Удачно спроектированные командные языки обеспечивают: высокую скорость обработки, эффективность и экономию использования ресурсов системы. Важными преимуществом хороших командных языков по сравнению с GUI является их алгоритмическая полнота: в GUI пользователь ограничен теми возможностями, для которых разработчик программы нарисовал иконки или сочинил пункты в меню. Командные же языки могут использоваться для решения любых алгоритмизуемых задач, в том числе и таких, о которых разработчики языка никогда и не задумывались.

Аргументы в пользу GUI

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

Недостатки WIMP-интерфейсов

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

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

В-третьих, WIMP GUI вместе с их 2D- интерфейсными элементами проектировались для работы с двухмерными же приложениями - такими, как обработка текстов, компоновка документов и электронные таблицы. Если же приложение является по своей сути трехмерным, то работа с ним с помощью 2D элементов управления становится не слишком естественной. Нынешние WIMP-интерфейсы для 3D-приложений обычно состоят из управляющих панелей с 2D-кнопками и слайдеров, окружающих 3D-мир, которые используются для управления 3D-курсором, для манипуляций с точкой зрения наблюдателя и для редактирования объектов. Понятно, что 3D-приложения, как правило, имеют много большую визуальную сложность, чем двухмерные, что еще более усиливает связанные с WIMP-интерфейсами проблемы.

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

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

Сегодня развиваются такие новые классы интерфейсов, как SILK (речевой), биометрический (мимический) и семантический (общественный).

Начал получать распространение и новый вид пользовательского интерфейса –тактильный.Тактильные устройства, в отличие от других интерактивных устройств, способны как "чувствовать", так и передавать информацию. Эти устройства имеют общую особенность: они снабжены средством силовой обратной связи - таким, как PHANToM, которое получает информацию о положении и жесте, а возвращает величину приложенной в точке силы. Таким образом, пользователь может ощущать форму жесткого объекта, в том числе через несколько слоев различного сопротивления при надавливании на внешнюю поверхность (что полезно, например, в хирургических симуляторах).

 

3. Написать программу на языке С++, реализующую телефонный справочник. В справочнике содержится следующая информация о каждом абоненте: имя и телефон. Реализовать вывод всей информации из справочника, поиск телефона по имени, поиск имени по телефону.

#include <iostream.h>

#include <conio.h>

#include <string.h>

#include <stdio.h>

void main()

{

struct Teleph

{

char FIO[20];

char Nomer[20];

} spisok [10];

 

int N,i,K;

char Str[20];

do

{

cout<<"\n 1. Cteate spravochnik";

cout<<"\n 2. Print spravochnik";

cout<<"\n 3. Find po FIO";

cout<<"\n 4. Find po Telephone";

cout<<"\n 5. Exit";

cout<<"\n Vvedite N ==";

cin>>N;

if(N==1)

{

cout<<"\n Vvedite kolichestvo ==";

cin>>K;

for (i=1;i<=K;i++)

{

cout<<"\n Vvedite FIO ==";

cin>>spisok[i].FIO;

cout<<"\n Vvedite Telephone ==";

cin>>spisok[i].Nomer;

}

}

if(N==2)

{

cout<<"\n Print...";

for(i=1;i<=K;i++)

{

cout<<"\n FIO = "<<spisok[i].FIO;

cout<<" Telephone = "<<spisok[i].Nomer;

}

}

if(N==3)

{

cout<<"\n Vvedite FIO == ";

cin>>Str;

for(i=1;i<=K;i++)

if (strcmp(spisok[i].FIO,Str)==0)

cout<<"\n Telephone = > "<<spisok[i].Nomer;

cout<<"\n";

}

if(N==4)

{

cout<<"\n Vvedite TELEPHONE == ";

cin>>Str;

for(i=1;i<=K;i++)

if(strcmp(spisok[i].Nomer,Str)==0)

cout<<"\n FIO => "<<spisok[i].FIO;

 

cout<<"\n";

}

} while (N!=5);

}



Поделиться:

Дата добавления: 2015-04-21; просмотров: 134; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.005 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты