|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
09.05.2009, 22:32 | #31 | |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,085
|
Цитата:
Вообще файл по своему определению не должен знать что он хранит. Это тупое хранилище и всё. Посмотрите на различные реализации сериализации и шаблон DataMapper |
|
09.05.2009, 23:30 | #32 | |
Форумчанин
Регистрация: 01.05.2009
Сообщений: 110
|
Именно, если бы я точно знал, какие абстракции мне нужны, то за программированием дело бы не встало. Потому и нахожусь в поиске совершенных абстракций.
Цитата:
|
|
09.05.2009, 23:44 | #33 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,085
|
Вообще основная суть DataMapper'a не в insert, update и т.п.
С одной стороны от преобрабзователя лежат данные, которыми оперирует приложение (классы, записи,...), а по вторую сторону - хранилище данных (файл, база данных,...). Этот самый DataMapper просто преобразует данные из вида, в котором они хранятся, в вид, в котором они обрабатываются и наоборот. Так что все эти insert'ы и update'ы легко выносятся в свою "абстракцию" |
09.05.2009, 23:49 | #34 |
Форумчанин
Регистрация: 01.05.2009
Сообщений: 110
|
Ну не знаю, я встречался с DataAdapter'ом в .NET. Ещё со строгой типизацией. В других система навроде Qt используют MVC. Вот конкретно этот датамапер я не хочу никуда выносить, от таких абстракций у меня всегда возникало больше проблем, чем пользы.
|
13.05.2009, 00:20 | #35 | |
Регистрация: 05.05.2009
Сообщений: 9
|
По способу доступа к данным файл можно рассматривать как блок с произвольным доступом (напр. Memory mapped file) или поток данных (те же stream-ы в STL), кстати и сокеты тоже рассматриваются обычно как поток данных.
Цитата:
|
|
13.05.2009, 00:41 | #36 | |
Eclipse Foundation
Старожил
Регистрация: 19.09.2007
Сообщений: 2,604
|
Цитата:
Если и считать потоками данных(и то, грубо говоря), то только сокеты, которые поддерживают соединение (TCP/SOCK_STREAM), но уж никак не датаграмные, или никсовые. |
|
13.05.2009, 03:32 | #37 |
Форумчанин
Регистрация: 01.05.2009
Сообщений: 110
|
Как бы понятно, что есть потоки данных, средство которое объединяет в себе работу с файлами, памятью, сетью и так далее. Есть и другие потоки, которые не вышеупомянутые потоки, а нити процессов. Для примера код из вики плюс откомпилированная версия для Windows.
Код:
Задач может быть много, хорошая абстракция позволила бы написать лаконичный код. Но самое главное изменила бы мышление программиста до уровня, который при стиле в приведённом мною примере просто недоступен. |
13.05.2009, 14:20 | #38 | ||
Регистрация: 05.05.2009
Сообщений: 9
|
Цитата:
Цитата:
|
||
13.05.2009, 19:01 | #39 |
Форумчанин
Регистрация: 01.05.2009
Сообщений: 110
|
|
10.06.2009, 10:06 | #40 |
Форумчанин
Регистрация: 29.05.2009
Сообщений: 320
|
Кстати, раз речь идет об ООП языках, какой язык был первым использовавшим ОО парадигму? По моему это SmallTalk. И как обычно бывает - первый язык, пионер так сказать, содержал идеи которые нашли применение гараздо позже. Другой такой пример - Lisp, вот где целый "сундук" "совершенных абстракций", которые пока очень меедленно входят в современное программирование.
Вот в обычных императивных языках бывают ПРОСТО ЧИСЛА, или ПРОСТО СЛОЖЕНИЕ, т.е. не объекты и методы, а просто представления машинных структур, ячеек памяти, и команд процессора - ближе к ассамблеру скорее, зато эфективно. В SmallTalk вовсе нет ничего ПРОСТО, число - это экземпляр класса, у класса объявлены методы арифметики, присваивания, булевы методы и т.д., поэтому число наследует эти методы и для него определены соответствующие операции. Вот и в Ruby например, по примеру SmallTalk такие опарации, как + - * / - это просто методы числовых классов. Т.е. код Код:
Код:
Код:
Код:
Если код Код:
Код:
Код:
Код:
В лиспе наоборот методы связываются с объектами направо: Код:
Код:
Код:
НО запись в процедурном стиле, если её расписать в граф. нотации - это просто линия, т.е. вырожденное дерево. А вот фун. запись это именно дерево. Примечательно что языки которые сейчас появляются (это и D и Nemerle и Scala) стремятся использовать и функциональное программирование, и ООП. кажется что единственной целью может быть только удобство программирования. Последний раз редактировалось BaronTreep; 10.06.2009 в 10:12. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
в поисках органайзера | crazy horse | Софт | 6 | 11.02.2008 16:56 |
Нахождение совершенных чисел. Паскаль | NikLik | Помощь студентам | 3 | 23.11.2007 22:19 |