|
||||
Меню:
Главная
Форум
Литература: Программирование и ремонт Импульсные блоки питания Неисправности и замена Радиоэлектронная аппаратура Микросхема в ТА Рубрикатор ТА Кабельные линии Обмотки и изоляция Радиоаппаратура Гибкие диски часть 2 часть 3 часть 4 часть 5 Ремонт компьютера часть 2 Аналитика: Монтаж Справочник Электроника Мощные высокочастотные транзисторы 200 микросхем Полупроводники ч.1 Часть 2 Алгоритмические проблемы 500 микросхем 500 микросхем Сортировка и поиск Монады Передача сигнала Электроника Прием сигнала Телевидиние Проектирование Эвм Оптимизация Автомобильная электроника Поляковтрансиверы Форт Тензодатчик Силовые полевые транзисторы Распределение частот Резисторные и термопарные Оберон Открытые системы шифрования Удк |
[5] amountOfTax t(RateTax * alllncomes / (1 - TaxRate)) truncate totalReceivedFrom: source (incomes includesKey: source) ifTrue: [tincomes at: source] ifFalse: [t0] totalSpentFor: reason (expenditures includesKey: reason) ifTrue: [texpenditures at: reason] ifFalse: [t0] private setInitialBalance: amount alllncomes *- amount. allExpenditures *- 0. incomes *- Dictionary new. expenditures *- Dictionary new Описание класса начинается с заголовка, в котором указывается, что класс с именем FinancialHistory (ФинансовыйОтчет) создается как подкласс класса Object, он имеет одну переменную класса с именем TaxRate (СтавкаНалога), доступную для всех его экземпляров, а каждый экземпляр класса имеет четыре переменных экземпляра, определяющих его структуру, с именами alllncomes (всеДоходы), incomes (доходы), allExpenditures (всеРасходы), expenditures (расходы). Первая и третья переменные будут хранить общие суммы всех доходов и расходов, соответственно, вторая и четвертая - словари, содержащие суммы и источники доходов и расходов. Класс включает в себя часть, называемую class methods (методы класса), в которой описываются методы, добавляемые метаклассом для обращения к классу, как объекту системы. Таким образом, методы класса и методы экземпляра (instance methods) описываются вместе как части полного описания реализации класса. В каждом классе методы разбиваются на категории, которые объединяют методы, используемые в родственных целях. Методы класса представлены в двух категориях. В первой, initialize, только один метод для инициализации переменной класса, во второй, instance creation, два метода для создания новых экземпляров класса, с разным количеством наличных денег. Обратите внимание, что методы создания экземпляров (сообщения initialBalance: и new) не имеют прямого доступа к переменным нового экземпляра, поскольку являются не частью класса, которому принадлежат новые экземпляры, а частью класса класса (метакласса). Поэтому методы создания экземпляров сначала создают экземпляры с неинициализированными переменными, а потом посылают им сообщение инициализации setlnitialBalance:. Метод для этого сообщения находится в описании реализации класса FinancialHistory уже среди методов экземпляра. Этот метод "умеет" присваивать переменным экземпляра соответствующие значения. Сообщение инициализации не считается частью внешнего протокола класса FinancialHistory, а классифицируется как частное и находятся в категории частных методов (private). Обычно такие сообщения посылаются только другими методами. Методы экземпляра представлены еще в двух категориях. В категории transaction recording, содержаться методы которое позволяют запомнить откуда и сколько получено доходов (receive: amount from: source), и сколько и по какой причине потрачено (spend: amount for: reason). В категории inquiries, содержаться методы которое позволяют определить сколько получено денег из данного источника (totalReceivedFrom: source), сколько денег потрачено по указанной причине (totalSpentFor: reason), сколько еще осталось денег (cashOnHand) и, наконец, сколько из всего заработанного было уплачено подоходного налога (amountOfTax), предполагая ради простоты, что ставка налога не зависит от суммы и равна 12%. Используемые в телах методов псевдопеременные self и super всегда ссылается на объект, вызвавший для исполнения этот метод. Между ними есть существенное различие: поиск метода, посланного self всегда начинается с класса, которому принадлежит приемник сообщения, а поиск метода, посланного super начинается с суперкласса того класса, в которм найден метод, содержащий псевдопеременную super. Символ t - стрелка вверх, это символ возврата значения, который, если встречается по ходу вычисления, допускает вычисление только выражения стоящего непосредственно после него (до следующей за ним точки!), прекращает выполнение метода и возвращает результат этого выражения, как результат всего метода. Чтобы использовать класс, надо сначала его инициализировать: FinancialHistory initialize. После этого можно создать книгу учета доходов и расходов некой семьи, посредством вычисления следующих выражений: FamilyFinancialHistory - FinancialHistory new. FamilyFinancialHistory receive: 500000 from: зарплатаЖены; receive: 400000 from: зарплатаМужа; receive: 300000 from: пенсияТещи. FamilyFinancialHistory spend: 150000 for: наПродукты; spend: 50000 for: наКниги; spend: 300000 for: наОдежду. Если теперь вычислим выражение FamilyFinancialHistory cashOnHand, то с удивлением обнаружим, что еще осталось 700,000 руб до следующей получки! Завершая статью, вспомним фразу еще одного древнего не программиста: "Вполне вероятно наступление невероятного!"(Агафон) и отнесем ее к вероятности выхода Голубой Книги программирования на Русском языке! 26 июня 1997 г. Кирютенко Юрий Александрович <jakir@math.rsu.ru> Савельев Василий Александрович <vasav@math.rsu.ru> Россия 344090 Ростов-на-Дону ул. Зорге, д.5 Ростовский государственный университет ауд. 153 Содержание Введение к разговору о языке Smalltalk..................1 Smalltalk: Идеология системы................................2 Smalltalk: Структура системы................................3 Объекты и сообщения.................................................................................3 Классы и экземпляры..................................................................................4 Подклассы, суперклассы, иерархия классов................................................. 5 Классы и Метаклассы.................................................................................7 Smalltalk: Синтаксис языка....................................7 Литералы....................................................................................................8 Символы..................................................................................................... 9 Строки........................................................................................................ 9 Имена.........................................................................................................9 Массивы..................................................................................................... 9 Переменные и присваивание значений.........................................................10 Сообщения................................................................................................10 Блоки........................................................................................................11 Управляющие структуры............................................................................12 Условные выражения.................................................................................12 О том, что еще интересного есть в Голубой Книге . 14 Простой пример нового класса.............................15 |
Среды: Smalltalk80 MicroCap Local bus Bios Pci 12С ML Микроконтроллеры: Atmel Intel Holtek AVR MSP430 Microchip Книги: Емкостный датчик 500 схем для радиолюбителей часть 2 (4) Структура компьютерных программ Автоматическая коммутация Кондиционирование и вентиляция Ошибки при монтаже Схемы звуковоспроизведения Дроссели для питания Блоки питания Детекторы перемещения Теория электропривода Адаптивное управление Измерение параметров Печатная плата pcad pcb Физика цвета Управлении софтверными проектами Математический аппарат Битовые строки Микроконтроллер nios Команды управления выполнением программы Перехода от ahdl к vhdl Холодный спай Усилители hi-fi Электронные часы Сердечники из распылённого железа Анализ алгоритмов 8-разрядные КМОП Классификация МПК История Устройства автоматики Системы и сети Частотность Справочник микросхем Вторичного электропитания Типы видеомониторов Радиобиблиотека Электронные системы Бесконтекстный язык Управление техническими системами Монтаж печатных плат Работа с коммуникациями Создание библиотечного компонента Нейрокомпьютерная техника Parser Пи-регулятор ч.1 ПИ-регулятор ч.2 Обработка списков Интегральные схемы Шина ISAВ Шина PCI Прикладная криптография Нетематическое: Взрывной автогидролиз Нечеткая логика Бытовые установки (укр) Автоматизация проектирования Сбор и защита Дискретная математика Kb радиостанция Энергетика Ретро: Прием в автомобиле Управление шаговым двигателем Магнитная запись Ремонт микроволновки Дискретные системы часть 2 | ||