Главная » Статьи для тега "класса"

Модуль Fix

Добавлено Дата: 21 May, 2012 категория: Haskell

 представляет  описание программных сущностей,  которые  описывают монадические неподвижные точки.  Детальное  описание этого понятия доступно в работе [5]. Данный модуль является «подчинённым»  по отношению к модулю Monad, поэтому его импорт выглядит следующим образом:

Читать »

Модуль Ord

Добавлено Дата: 19 May, 2012 категория: Haskell

предназначен для разгрузки стандартного модуля Prelude. В него вынесено определение класса Ord (см. стр. 121) и определения нескольких десятков экземпляров для этого класса. Использование:

import  Data.Ord

Класс Ord определяет класс типов, в которых имеет смысл отношение порядка. Соответственно, определение этого класса выглядит следующим образом:

Читать »

Экземпляры класса Logic

Добавлено Дата: 19 May, 2012 категория: Haskell

В разделе 3.1. был представлен класс Logic,  который  можно  использовать для описания методов работы с типами величин, представляющих собой логические значения.

В этом классе определены классические  методы из алгебры логики, а также несколько дополнительных, вроде импликации и эквивалентности (при желании, конечно, можно было добавить в определение этого класса и методы для вычисления таких операций, как «стрелка Пирса» или «штрих Шеффера»). Само собой разумеется, что все эти методы применимы к булевским значениям истинности, которые в языке Haskell представляются типом Bool. Для того чтобы можно было применять такие методы на значениях типа Bool, необходимо определить его экземпляром  класса Logic:

Читать »

Автоматическое построение экземпляров

Добавлено Дата: 19 May, 2012 категория: Haskell

В языке Haskell имеется возможность автоматического построения экземпляров классов для некоторых классов из стандартного модуля Prelude. У разработчика программного обеспечения в таком случае нет необходимости явно определять экземпляры. Для этих целей используется ключевое слово deriving, которое записывается после  объявления алгебраического  типа данных или изоморфного типа. После этого ключевого слова идёт перечисление классов, для которых необходимо автоматически  построить экземпляры. Данное перечисление заключается в круглые скобки, если классов  несколько. Если класс один, то можно просто привести его наименование. Например:

Читать »

Модуль IArray

Добавлено Дата: 15 May, 2012 категория: Haskell

В модуле IArray описывается общий интерфейс к произвольным  массивам, а потому к этому интерфейсу добавлен набор утилитарных функций для работы с произвольным массивом. Эти функции обобщают одноимённые функции из головного модуля Array  (см. раздел 8.1.). Также в этом модуле обобщается и сам алгебраический тип данных, представляющий массивы. Поэтому при подключении модуля IArray

Читать »

Классы типов и экземпляры классов

Добавлено Дата: 13 May, 2012 категория: Haskell

Третий тип программных сущностей языка Haskell —  классы  типов.  Здесь имеется одна ловушка, в которую могут попасть те, кто применяет на практике объектно-ориентированный стиль. В языке Haskell, а также в некоторых схожих с ним функциональных языках программирования под термином «класс» понимается совсем не то, что подразумевает объектно-ориентированное программирование. Если в рамках объектно-ориентированного подхода под классом понимается тип данных, то в функциональном программировании (а вернее, в модели статической типизации, принятой в языке  Haskell) класс типов  —  это, скорее, интерфейс работы с данными.

Читать »

Окончательные  замечания  о  системе  типов в языке Haskell

Добавлено Дата: 12 May, 2012 категория: Haskell

Таким  образом, после изучения типов, классов и их  экземпляров, должно быть ясно, что эти три программные  сущности  являются в системе типизации

3.6. Окончательные замечания о системе типов в языке Haskell                        89

языка Haskell самостоятельными и слабо зависящими  друг от друга. Это значит, что типы данных, классы типов и экземпляры классов могут определяться совершенно независимо друг от друга, при этом экземпляры будут собой связывать типы и классы.

Читать »

Запись файлов AU

Добавлено Дата: 9 May, 2012 категория: Программирование звука

Запись   файлов   AU   производится   аналогичным   образом.   Процедура   записи файлов  AU   это,  по  существу,  объект  проигрывателя,  поэтому  он  наследует  от AbstractPlayer и  реализует  метод  Play  для  записи  данных.  Конструктор  принимает и сохраняет выходной поток.

Читать »

Истинное значение protected

Добавлено Дата: 6 May, 2012 категория: Java

Ранее мы кратко упомянули о том, что объявление члена класса защищенным (то есть с ключевым словом protected) означает возможность обращения к нему из классов, расширяющих данный, — однако этому замечанию не хватает формальной четкости. Выражаясь более точно, к защищенному члену класса можно обращаться через ссылку на объект, относящийся по меньшей мере к тому же типу, что и класс. Пример поможет нам разобраться с этим утверждением. Предположим, имеется следующая иерархия классов:

Читать »

Чтение и запись целых чисел

Добавлено Дата: 6 May, 2012 категория: Программирование звука

При  чтении  и  записи  целых  чисел,  занимающих  несколько  байтов,  требуется соблюдать  определенный  порядок.  Чтобы  обеспечить  переносимость, вам  следует за один прием всегда считывать один байт и тщательно  компоновать многобайтные целые числа.

Читать »

Классы Float и Double

Добавлено Дата: 6 May, 2012 категория: Java

расширяют Number и служат для представления типов float и double в виде класса. За редкими исключениями, имена методов и константы совпадают для обоих типов. Приведенный ниже список соответствует классу Float, однако float и Float всюду могут быть заменены на double и Double соответственно, что даст эквивалентные поля и методы для класса Double. Помимо стандартных методов класса Number, классы Float и Double содержат следующие методы:

Читать »

Расширение класса

Добавлено Дата: 4 May, 2012 категория: Java

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

При расширении класса на его основе создается новый класс, наследующий все поля и методы расширяемого класса. Исходный класс, для которого проводилось расширение, называется суперклассом.

Читать »

Чтение файлов формата IFF/8SVX

Добавлено Дата: 3 May, 2012 категория: Программирование звука

Определим единственный класс IffRead. Чтобы использовать его, откройте файл и проинициализируйте новый объект  IffRead открытым файлом.

Листинг 19.2. Программа iff.h

#include "audio.h"

#include "compress.h"

Читать »

Уровни доступа

Добавлено Дата: 3 May, 2012 категория: Java

 методы и  переменные  класса  могут  иметь  следующие уровни доступа: public, private, protected  и package.  Наш

класс PingPongEngine имеет уровень  доступа public. Это значит, что  у любого класса есть доступ к нему. Давайте  проведем простой эксперимент  — удалим ключевое слово public из  объявления класса PingPongEngine.     Теперь   класс   PingPongTable  не   будет компилироваться,   указывая  на  ошибки  PingPongEngine cannot be resolved  to  a  type  (Невозможно  определить  тип  PingPongEngine)  и  The type   engine.PingPongEngine    is    not    visible    (Тип    данных engine.PingPongEngine  невидим).  Это   значит,   что   класс PingPongTable не видит больше класс PingPongEngine.

Читать »

Класс Runtime

Добавлено Дата: 1 May, 2012 категория: Java

Объекты класса Runtime описывают состояние runtime-системы Java и те операции, которые она может выполнить. Для получения объекта Runtime, соответствующего текущему runtime-контексту, следует вызвать статический метод Runtime.getRuntime.

Одна из операций, выполняемых текущим runtime-контекстом, — получение входного или выходного потока, переводящего символы локального набора в их Unicode-эквиваленты. Многие существующие системы работают с национальными  алфавитами, использующими

Читать »