Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Конференция «Технологии управления данными 2018»
СУБД, платформы, инструменты, реальные проекты.
29 ноября 2018 г.

5.4.1. Реализация классов

Определение класса Window на языке Eiffel мало отличается от соответствующего определения на языке C++ (сравните с п. 5.3.1):


	class WINDOW

	export

	  add_box, add_circle, clear_selections, cut_selections,

	  group_selections, move_selections,

	  redraw_all, select_item, ungroup_selections

	feature

	  xmin, ymin, xmax, ymax: REAL;

	  Create (x0, y0, width, height: REAL) is body end;

	  add_box (x, y, width, height: REAL) is body end;

	  add_circle (x, y, radius: REAL) is body end;

	  add_to_selections (ashape: SHAPE) is body end;

	  clear_selections is body end;

	  cut_selections is body end;

	  group_selections: Group is body end;

	  move_selections (deltax, deltay: REAL) is body end;

	  redraw_all is body end;

	  select_item (x, y: REAL) is body end;

	  ungroup_selections is body end;

	end -- class WINDOW

Все свойства (feature) класса (соответствуют членам класса в языке C++) считаются приватными, если только они не объявлены явно как общедоступные: все общедоступные свойства перечисляются в разделе export. Свойство Create (аналог конструктора класса в языке C++) всегда является общедоступным. Остальные особенности синтаксиса понятны и без пояснений.

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

Определение класса Window на языке Smalltalk имеет следующий вид:


	class name            Window

	superclass            Object

	instance variables    xmin, ymin, xmax, ymax: REAL

	class methods

	  instantiating

	  createAt aPoint ofWidth: width ofHeigt: heigt

	instance methods

	  adding shapes

	  addboxAt aPoint ofWidth: width ofHeigt: heigt

	  addCircleAt aPoint ofRadius: radius

	 

	  refreshing window

	  redrawAll

	 

	  manipulating selections

	  clearSelections

	  cutSelections

	  groupSelections

	  moveSelectionsBy: deltaPoint

	  selectItemAt: aPoint

	  ungroupSelections

	 

	  private

	  addToSelections: aShape

Все классы языка Smalltalk являются подклассами системного класса Object, что позволяет использовать принадлежащие им по наследованию системные операции системы Smalltalk, определенные в классе Object. Строки в описании класса, выделенные курсивом, определяют категории методов. Они служат только для структурирования набора методов. Методы, включенные в категорию private, являются приватными и не доступны извне класса. Чтобы сделать атрибуты приватными, следует не определять методы для запроса и установки значений атрибутов. В системе Smalltalk определен системный метод @, который объединяет пару числовых значений в одно составное значение. Это позволило вместо двух переменных x и y (координат точки) использовать в нашем примере одну переменную aPoint, представляющую обе координаты точки(x,y). Операция присваивания значения (3,4) переменной aPoint с использованием метода @ имеет вид:


	aPoint <- 3 @ 4

Назад | Содержание | Вперед

Новости мира IT:

Архив новостей

Последние комментарии:

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 985 1945361
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2015 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...