Есть ли что-нибудь как функциональная модель?

user всегда является текущим вошедшим пользователем. Ваш вид использует модель профиля, поэтому вы можете получить доступ к profile или object.

{{ profile.user.get_full_name }}
{{ profile.age }}

Обратите внимание, ваш метод get_username_field никогда не вызывается и ничего не делает; Вы должны удалить его.

Заметьте также, что на самом деле не очень хорошая идея хранить age как целое число в базе данных. Это означает, что вам как-то приходится обновлять его каждый год, так как люди имеют странную привычку стареть ... Лучше хранить дату рождения и иметь метод для отображения возраста.

5
задан StackUnderflow 13 November 2008 в 20:06
поделиться

3 ответа

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

Конкретный язык функциональной спецификации это используется в классе Алгоритмов и Структур данных в Университете Буэнос-Айреса, имеет генераторы, наблюдателей и дополнительные операции. Генератор является выражением, которое является и экземпляром и возможным составом типа данных. Например, для двоичного дерева (купленный ADT), у нас есть пустые узлы и двоичные узлы. Таким образом, у нас были бы генераторы:

-nil
-bin(left:bt, root: a, right:bt)

Где оставлено экземпляр купленного, корень является универсальным значением, и право - другой купленный. Так, ноль является допустимой формой купленного, но мусорное ведро (мусорное ведро (ноль, 1, ноль), 2, ноль) также допустимо, представляя двоичное дерево с корневым узлом со значением 2, левый дочерний узел со значением 1 и пустой узел права ребенка.

Таким образом для функции, которые говорят, вычисляет количество узлов в дереве, Вы определяете наблюдателя ADT, и Вы определяете ряд аксиом, которые отображаются на каждый генератор. Так, например:

numberOfNodes(nil) == 0
numberOfNodes(bin(left,x,right))== 1 + numberOfNodes(left) + numberOfNodes(right)

Это имеет преимущество использования рекурсивных определений операций и имеет больше, официально интересное свойство, что можно использовать что-то названное структурной индукцией, чтобы ДОКАЗАТЬ, что спецификация корректна (да, Вы демонстрируете, что Ваш алгоритм приведет к надлежащему результату).

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

Bernot, G., Bidoit, M. и Knapik, T. 1995. Наблюдательные спецификации и предположение неразличимости. Theor. Comput. Наука 139, 1-2 (март 1995), 275-314. DOI = http://dx.doi.org/10.1016/0304-3975 (94) 00017-D

Guttag, J. V. и Убывание, J. J. 1993. Лиственница: Языки и Инструменты для Формальной Спецификации. Springer-Verlag New York, Inc. Абстракция и Спецификация в Разработке программного обеспечения, Barbara Liskov y John Guttag, Нажатие MIT, 1986.

Основные принципы Алгебраической Спецификации 1. Уравнения и Начальная Семантика. H. Ehrig y B. Mahr Springer-Verlag, Берлин, Гейдельберг, Нью-Йорк, Токио, Германия, 1985.

С соответствующими ссылками: http://www.cs.st-andrews.ac.uk/~ifs/Resources/Notes/FormalSpec/AlgebraicSpec.pdf http://nms.lcs.mit.edu/larch/pub/larchBook.ps

Это - heck интересной темы.

6
ответ дан 14 December 2019 в 09:03
поделиться

И в OO и в парадигмах FP, Вы формируете свою модель предметной области (проблема, которую Вы решаете), и затем создайте объекты в своей программе для зеркального отражения объектов области. Существуют некоторые различия, в том, что то, как объекты программы зеркально отражают объекты области, под влиянием парадигмы и языка, который Вы используете. Некоторые примеры (в Haskell):

1
ответ дан 14 December 2019 в 09:03
поделиться

Блок-схема и/или модель процесса / схема могут использоваться в качестве функциональной модели для не программы OO. Но это все еще не дает смысл границ, подобных смыслу модели OO.

http://en.wikipedia.org/wiki/Functional_model

0
ответ дан 14 December 2019 в 09:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: