Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: 1 2 [Все]   Вниз
  Печать  
Автор Тема: c# структуры и указатели  (Прочитано 59441 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
гайка
Гость
« : 07-07-2011 19:13 » 

Эту тему уже затронули Dale и resource в теме "C#, структура и буфер с данными", но не продолжили, ибо правилами сайта возбраняется болтовня не по теме.
Мне нужно на шарпе организовать бинарное дерево, то есть структуру с тремя полями:
Код: (C++)
struct Client
{
        string number;
        struct Client* left;
        struct Client* right;
}
объясните, пожалуйста, как правильно использовать unsafe и fixed или, возможно, есть другие методы решения этой проблемы?
« Последнее редактирование: 08-07-2011 07:25 от Джон » Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #1 : 07-07-2011 19:27 » 

Насколько я помню, на шарпе это не тривиальная задача. Когда то я просто воспользовался контейнером List и не заморачивался.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
гайка
Гость
« Ответ #2 : 07-07-2011 19:30 » 

не знакома с ним. один момент, сейчас прогуглю
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #3 : 07-07-2011 19:34 » 

В STL С++, List организуется как двухсвязанный список. Думаю что в шарпе примерно такое же решение. Хотя могу и ошибаться.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 07-07-2011 19:36 » 

Прежде всего - о каком языке программирования идет речь?
Записан

Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #5 : 07-07-2011 19:37 » 

Dale, Вроде как в теме обозначен Шарп Улыбаюсь Правда структура чистое С/С++
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
гайка
Гость
« Ответ #6 : 07-07-2011 19:41 » 

Dale, я писала такую задачу на с++, теперь ее нужно перегнать под c#

Добавлено через 48 секунд:
Finch, поняла. я что-то не нахожу этого в с#, ну как бы там не было, первостепенная задача - разобраться с unsafe и fixed
« Последнее редактирование: 07-07-2011 19:42 от гайка » Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #7 : 07-07-2011 19:43 » 

Гайка, Не заморачивайся на двухсвязанном списке. Используй контейнер. (Не изобретай велосипед).
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
гайка
Гость
« Ответ #8 : 07-07-2011 19:47 » 

есть у меня такая привычка - изобретать вещи, которые впоследствии никому кроме меня (да и мне вряд ли) не пригодятся=)
к тому же использование контейнера для меня будет "открытием америки"...
Записан
Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #9 : 07-07-2011 19:51 » 

первостепенная задача - разобраться с unsafe и fixed

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

Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
гайка
Гость
« Ответ #10 : 07-07-2011 19:59 » 

Dale, но ведь c# не дружит с указателями на указатели, ругается и кричит что он такого не умеет=)
вот примерно так кричит:"Указатели и буферы фиксированного размера можно использовать только в небезопасном контексте"
Записан
Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #11 : 07-07-2011 20:00 » 

А теперь вернемся к сути задачи.

Прежде всего, в языке C#, в отличие от C++, структуры и классы - не одно и то же. Структура в C# имеет семантику значения, она не может иметь наследников и на нее нельзя получить ссылку (теоретически можно, конечно, за счет неявного создания класса-оболочки, но это особый случай).

Класс имеет ссылочную семантику. Экземпляры класса создаются исключительно в "куче" и доступны только через ссылку.

(Заодно приучаемся к мысли, что в чистом C# указателей нет и быть не может, есть только ссылки. На самом деле указатели оставлены как лазейка для работы с "нативным" кодом, но это сейчас тоже не обсуждается, ибо не тот случай).

Добавлено через 4 минуты и 49 секунд:
Dale, но ведь c# не дружит с указателями на указатели, ругается и кричит что он такого не умеет=)

Конечно, не дружит (см. предыдущий пост). Ну и не надо его насиловать, чтобы дружил, насильно мил не будешь.

Если взялись за Шарп, отбрасывайте плюсплюсовые повадки в сторону, они будут только сбивать с толку. Это совершенно другой язык, и говорят на нем совсем по-другому.
« Последнее редактирование: 07-07-2011 20:05 от Dale » Записан

Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
гайка
Гость
« Ответ #12 : 07-07-2011 20:09 » 

ладно, приучаемся, уже почти приучились.
моя наивность меня погубит.
то есть мне про структуру тоже можно забыть?
Записан
Вад
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #13 : 07-07-2011 20:13 » 

Dale, но ведь c# не дружит с указателями на указатели, ругается и кричит что он такого не умеет=)
вот примерно так кричит:"Указатели и буферы фиксированного размера можно использовать только в небезопасном контексте"
Гайка, а здесь нет буфера фиксированного размера. Есть только структура, а она не unsafe - это просто value type. По сути, это такая оптимизация над классами (может размещаться на стеке, копируется по значению).
Поэтому, если не нужно взаимодействовать с unmanaged-кодом или оптимизировать по скорости создание-удаление огромного числа таких структур, то проще сделать class с публичными полями для тех же целей, имхо. Мороки меньше, всё по ссылкам.
Записан
Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #14 : 07-07-2011 20:14 » 

Итак, для начала забываем C++.

Забыли? Тогда пишем:

Код: (C#)
class Client
{
    public string number;
    public Client left;
    public Client right;
}

Конечно, с точки зрения хорошего стиля это форменное безобразие - открытые члены класса, причем не проинициализированные явно. Но для начала сойдет, хотя бы скомпилируется. Потом улучшим по ходу.
« Последнее редактирование: 08-07-2011 07:19 от Джон » Записан

Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
гайка
Гость
« Ответ #15 : 07-07-2011 20:18 » 

так точно, Dale! написали, скомпиллировали
Записан
Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #16 : 07-07-2011 20:21 » 

то есть мне про структуру тоже можно забыть?

Эх, девушки, все вам лишь бы поскорее забыть...

Ну в данном конкретном случае - да, можно немного подзабыть, поскольку для динамических структур структура (прошу прощения за тавтологию) - малопригодный материал. Но вообще структуры бывают весьма полезны, поэтому совсем уж забывать их ни к чему. Скорее отложим их пока про запас.
Записан

Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
гайка
Гость
« Ответ #17 : 07-07-2011 20:21 » 

а новичкам аватарки не полагаются, да? жаль=(

Добавлено через 3 минуты и 18 секунд:
Цитата
Эх, девушки, все вам лишь бы поскорее забыть...
я попрошу...
Цитата
2.2 Обсуждение недостатков и какие-либо обвинения противоположного пола.

Добавлено через 1 минуту и 19 секунд:
ах да, в цитатах надо источник указывать... ну да ладно, вроде бы и так понятно
« Последнее редактирование: 07-07-2011 20:26 от гайка » Записан
Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #18 : 07-07-2011 20:28 » 

Это не недостаток, а скорее свойство. Типа "не бага, а фича". И не обвинение, а констатация факта.

Ну а теперь построимпосадим маленькое такое деревце. Бонсай, с корнем и двумя листиками.

Код: (C#)
Client root = new Client();
root.number = "Root";

root.left = new Client();
root.left.number = "Left Leaf";

root.right = new Client();
root.right.number = "Right Leaf";

Добавлено через 47 секунд:
ах да, в цитатах надо источник указывать...

Ничего, я не столь тщеславен.
« Последнее редактирование: 08-07-2011 07:19 от Джон » Записан

Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
гайка
Гость
« Ответ #19 : 07-07-2011 20:33 » 

Цитата
Ну а теперь построимпосадим маленькое такое деревце
это внутри свеженького класса client?

Добавлено через 30 секунд:
тьфу ты... цитаты...
« Последнее редактирование: 07-07-2011 20:34 от гайка » Записан
Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #20 : 07-07-2011 20:36 » 

это внутри свеженького класса client?

Нет, это уже в основном коде. Например, прямо в Main(). Класс закрыли, первая версия вчерне готова.

Добавлено через 4 минуты и 44 секунды:
Потом, спасатели, аватара подождет. Что там с нашим многострадальным кодом, стало лучше?
« Последнее редактирование: 07-07-2011 20:41 от Dale » Записан

Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
гайка
Гость
« Ответ #21 : 07-07-2011 20:43 » 

Dale, готово, теперь как я могу использовать этот класс  в других классах? его нужно передавать в параметрах?
Записан
Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #22 : 07-07-2011 20:44 » 

Для начала - что значит "использовать", каким образом?
Записан

Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
гайка
Гость
« Ответ #23 : 07-07-2011 20:45 » 

Да, пожалуй аватар - это не самая насущная проблема)

Добавлено через 3 минуты и 11 секунд:
Dale, есть формочка создания нового клиента, допустим там только текстбокс, куда вводится номер паспорта и кнопка сохранить. в каком виде это будет храниться, я теперь сказать не могу, так как произошло крушение моего маленького мира.
« Последнее редактирование: 07-07-2011 20:48 от гайка » Записан
Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #24 : 07-07-2011 20:52 » 

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

Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
гайка
Гость
« Ответ #25 : 07-07-2011 20:54 » 

я вообще-то потом еще собиралась в текстовый файл инфу запихать, но с этим я и сама разберусь, эт ерунда.
Это курсовой проэкт, была бы моя воля, я бы ясен *** навояла бы бд на серваке по-быстренькому и никаких деревьев и хеш-таблиц, но тут не поспоришь...
Записан
Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #26 : 07-07-2011 20:57 » 

Если "использовать" - это создать экземпляр клиента, то примерно в таком духе:

Код: (C#)
// создаем новый экземпляр класса в "куче"
Client cln = new Client();
// вставляем клиента в нужную ветвь нашего дерева
« Последнее редактирование: 08-07-2011 07:21 от Джон » Записан

Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #27 : 07-07-2011 20:57 » 

Гайка, С базами не все так просто Улыбаюсь Нужно будет изучать целый раздел под названием ADO.NET
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
гайка
Гость
« Ответ #28 : 07-07-2011 21:02 » 

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

Добавлено через 3 минуты и 1 секунду:
Dale, вот так просто? бах и всё?
Жаль могла бы и сама додуматься... эх, на что девушкам голова? Улыбаюсь
« Последнее редактирование: 07-07-2011 21:05 от гайка » Записан
Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #29 : 07-07-2011 21:07 » 

Для базы нужно еще и клиентское приложение, поскольку пользователи обычно напрямую с базами не работают. Тут-то и начнется самое веселое...


Нет, если уж преподаватель не потребовал задействовать базу, нужно только перекреститься с облегчением - 9/10 проблем прошли стороной.
Записан

Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
гайка
Гость
« Ответ #30 : 07-07-2011 21:08 » 

Finch, а в настройках учетной записи всё равно доступны только имя, язык, мыло, пароль, секретный вопрос и всё.
Записан
Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #31 : 07-07-2011 21:09 » 

Dale, вот так просто? бах и всё?

Вот такой это язык - Шарп. В нем почти все просто. А то, что не просто, то очень просто. Для того и придумали.

эх, на что девушкам голова? Улыбаюсь

Гайка, ну мы же вроде только что договорились насчет политкорректности, и опять нарушение статьи непомнюкакойномер. Не девушкам - феминофорумчанам.
« Последнее редактирование: 07-07-2011 21:11 от Dale » Записан

Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
гайка
Гость
« Ответ #32 : 07-07-2011 21:10 » 

Dale, моей целью и является создание клиентского приложения, как ты уже, наверное, заметил=)

Добавлено через 2 минуты и 10 секунд:
ладно, тогда и треп не по теме пора прекратить=)
спасибо, Dale, спасибо Finch, ваш вклад в мою работу был действительно большим.
« Последнее редактирование: 07-07-2011 21:12 от гайка » Записан
Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #33 : 07-07-2011 21:12 » 

Dale, моей целью и является создание клиентского приложения, как ты уже, наверное, заметил=)

То есть база все же маячит на горизонте, просто до нее пока дело не дошло?
Записан

Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #34 : 08-07-2011 06:51 » 

Что это было?..
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
гайка
Гость
« Ответ #35 : 08-07-2011 13:26 » 

Dale, я ведь имею право сделать так:
Код: (C#)
    public class Client
    {
        public string number;
        public Client left;
        public Client right;
    }
    public partial class Form1 : Form
    {
        public Client root=new Client();// корень дерева клиентов
        Client current=new Client();// текущий клиент
          ...
        private void новыйКлиент(object sender, EventArgs e)
        {
            Form2 f2 = new Form2(this.root,this.current);
        }
    }
    public partial class Form2 : Form
    {
        private Client root;
        private Client current;

        public Form2(Client arg1, Client arg2)
        {
            InitializeComponent();
            this.root = arg1;
            this.current = arg2;
        }
    }
?

Добавлено через 1 минуту и 47 секунд:
ну и дальше в форме 2 юзать roor и current, как мне заблагорассудится...
« Последнее редактирование: 08-07-2011 13:28 от гайка » Записан
Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #36 : 08-07-2011 13:47 » 

Dale, я ведь имею право сделать так:
...

Теоретически да, но вообще это плохой стиль программирования.

Лучше отделить представление (экранные формы) от модели (двоичное дерево). Хотя, конечно, работать и так будет... Но в процессе эволюции программы качество кода будет быстро падать.
Записан

Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
гайка
Гость
« Ответ #37 : 08-07-2011 14:06 » 

Отделить чем?
Записан
Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #38 : 08-07-2011 14:18 » 

Отделить чем?

Скажем, вынести в отдельную сборку - "модель".
Записан

Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
гайка
Гость
« Ответ #39 : 08-07-2011 14:27 » 

Скажем, вынести в отдельную сборку - "модель".
просто отделить фигурной скобкой?
или создать класс forms и в него запихнуть все формы (классы ведь могут быть вложенными, кажется)?
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #40 : 08-07-2011 14:35 » 

Гайка, Вообше по правилам составления программ,
1) на каждую сушность желательно делать отдельный файл.
2) Не делать "швейцарские ножи". Каждая сушность должна делать что то одно, но очень хорошо.
3) Каждая сушность должна по минимуму зависеть от других сушностей.
4) ....
« Последнее редактирование: 08-07-2011 14:38 от Finch » Записан

Не будите спашяго дракона.
             Джаффар (Коша)
гайка
Гость
« Ответ #41 : 08-07-2011 14:48 » 

Вообше по правилам составления программ, на каждую сушность желательно делать отдельный файл.

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

И не лень вам (админам и модераторам) размусоливать нам, сосункам, простейшие истины? Улыбаюсь подтирать нам сопли:)

Добавлено через 3 минуты и 3 секунды:
ого, кажется я только что стала женщиной=)
« Последнее редактирование: 08-07-2011 14:51 от гайка » Записан
Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #42 : 08-07-2011 17:44 » 

Скажем, вынести в отдельную сборку - "модель".
просто отделить фигурной скобкой?

Фигурной скобки маловато будет. Пока хотя бы в отдельное пространство имен вынести. А лучше - в отдельный проект, но это потом, когда код разрастется. Пока там десяток строк, можно не усложнять.

или создать класс forms и в него запихнуть все формы (классы ведь могут быть вложенными, кажется)?

Это явно лишнее.

ого, кажется я только что стала женщиной=)

Я же предупреждал, Шарп - он такой... За ним глаз да глаз нужен!
Записан

Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
гайка
Гость
« Ответ #43 : 08-07-2011 17:59 » 

запихнула класс Client в отдельный файл, мы уже подружились с c#: я ему шутки шучу, он подчёркивает те, что очень уж смешные Улыбаюсь

Я же предупреждал, Шарп - он такой... За ним глаз да глаз нужен!
это не Шарп... это Finch... ^_^
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #44 : 08-07-2011 18:02 » 

Так, уже что то интересное, я то тут причем? Что такоего уже натворил?
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
гайка
Гость
« Ответ #45 : 08-07-2011 18:07 » 

Так, уже что то интересное, я то тут причем?
не бойся, папой ты конечно не станешь, но женщиной ты меня сделал? сделал!

Добавлено через 8 минут и 5 секунд:
я в том смысле, что пол поменял в профиле Улыбаюсь

Добавлено через 10 дней, 21 час, 47 минут и 21 секунду:
2.2.6.6. Данные о выдаче или возврате SIM-карт клиентами должны содержать:
- № паспорта – строка, формат которой соответствует аналогичной строке в данных о клиентах;
- № SIM-карты – строка, формат которой соответствует аналогичной строке в данных о SIM-картах;
- Дата выдачи - строка;
- Дата окончания действия - строка.
Примечания:
1. Наличие в этих данных записи, содержащей в поле «№ паспорта» значение X и в поле «№ SIM-карты» значение Y соответственно означает выдачу клиенту с номером паспорта X SIM-карты с номером Y. Отсутствие такой записи означает, что клиенту с номером паспорта X не выдавалась SIM-карта с номером Y.
2. Одному клиенту может быть выдано несколько SIM-карт. Таким образом, могут быть данные, имеющие повторяющиеся значения в своих полях.

2.2.6.7. Данные о выдаче или возврате SIM-карты клиентов должны быть организованны в виде списка, который упорядочен по первичному ключу – «№ SIM-карты». Вид списка и метод сортировки определяются вариантом задания.

как можно упорядочить список по первичному ключу, если первичный ключ может быть пустым?Не понял??
« Последнее редактирование: 19-07-2011 16:02 от гайка » Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #46 : 19-07-2011 16:04 » 

Гайка, С точки зрения Баз данных, подход не верный Улыбаюсь Так как первичный ключ это индекс. Он гарантирует, что запись будет уникальной. Но тут не базы данных Улыбаюсь С другой стороны. Ключевой объект у тебя сим карта, Если ее нет, то и нет транзакции. Все остальные поля не имеют просто смысла.

Добавлено через 1 минуту и 21 секунду:
PS можно разбить на два списка. Первый это клиенты. Второй список это сим карта и транзакции с ней.
« Последнее редактирование: 19-07-2011 16:05 от Finch » Записан

Не будите спашяго дракона.
             Джаффар (Коша)
гайка
Гость
« Ответ #47 : 19-07-2011 16:07 » 

думаю, будет логично сделать так: нет симкарты, нет и клиента. у меня там мини-база в текстовом файлике Улыбаюсь

Добавлено через 5 минут и 46 секунд:
точно. только у меня клиенты в виде деревьев ахах Улыбаюсь ну суть таже, тот же список, только ветвистый =) а в список выдачи-возврата сим-карт заносить клиентов только тех, у кого есть сим-карта!

Спасибо, Finch 8)
« Последнее редактирование: 19-07-2011 16:13 от гайка » Записан
Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #48 : 19-07-2011 18:48 » 

2.2.6.6. Данные о выдаче или возврате SIM-карт клиентами должны содержать:
- № паспорта – строка, формат которой соответствует аналогичной строке в данных о клиентах;

Чревато. В реальной жизни люди периодически меняют паспорта по многим причинам - возраст, смена семейного положения, утеря и т.д. Если такая оказия случится с одним из "деревянных" клиентов, все сим-карты, ранее выданные ему, осиротеют.

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

Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
гайка
Гость
« Ответ #49 : 19-07-2011 19:05 » 

Dale, почему осиротеют? у меня в самом дереве хранится только номер паспорта, остальное в файле. надо изменить - удаляем старую запись и делаем новую, а файл перезаписываем.
Записан
Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #50 : 19-07-2011 19:11 » 

Dale, почему осиротеют?

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

В нашем случае владелец меняет паспорт, в его записи обновляется номер паспорта. Записи со старым номером больше нет в списке. Начиная с этого момента все записи списка сим-карт, ссылающиеся на старый номер, сиротеют.
Записан

Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #51 : 19-07-2011 19:17 » 

Гайка, в таком случае хранят исторические данные добавляя в PK поле даты (срок заведения записи, срок начала или конца годности). Текущая запись будет иметь максимальную дату, а на прочие записи можно также ссылаться по дате.
Опять таки, зачем текстовый файл, если удобнее работать с реляционными базами, для который давно разработаны модели и алгоритмы.
« Последнее редактирование: 19-07-2011 19:19 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #52 : 19-07-2011 19:20 » 

Ром, читай выше Улыбаюсь Условия курсового. Двухсвязанные списки Улыбаюсь
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #53 : 19-07-2011 19:25 » 

Что-то вы всё усложняете с сиротами, РСУБД и т.п. Сначала нужно точно определить условия задачи, затем решить самым простым способом.

Кстати, деревья в текстовых файлах удобно хранить либо в формате XML, либо LISP-списков, либо JSON.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
гайка
Гость
« Ответ #54 : 19-07-2011 19:49 » 

Dale, у меня сим-карты не ссылаются на номер паспорта владельца!
Записан
Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #55 : 19-07-2011 19:59 » 

Dale, у меня сим-карты не ссылаются на номер паспорта владельца!

Я про это:

2.2.6.6. Данные о выдаче или возврате SIM-карт клиентами должны содержать:
- № паспорта – строка, формат которой соответствует аналогичной строке в данных о клиентах;
- № SIM-карты – строка, формат которой соответствует аналогичной строке в данных о SIM-картах;

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

Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
гайка
Гость
« Ответ #56 : 19-07-2011 20:13 » 

Dale, у меня данные о выдаче-возврате - это список, который каждый раз, пересоздается. он считывает всю нужную инфу из файла о клиенте.
если честно, от моей программы нет никакого толку в реальной жизни, я просто выполняю задание, которое мне дал преподаватель. а он его дал для тренировки мозгов, а не для того, чтоб потом продать это приложение компании билайн 8)
Записан
Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #57 : 19-07-2011 20:36 » 

Dale, у меня данные о выдаче-возврате - это список, который каждый раз, пересоздается. он считывает всю нужную инфу из файла о клиенте.

А изменения в него могут вноситься, или это просто "отображатель" данных только для чтения?

если честно, от моей программы нет никакого толку в реальной жизни, я просто выполняю задание, которое мне дал преподаватель. а он его дал для тренировки мозгов, а не для того, чтоб потом продать это приложение компании билайн 8)

Я догадывался, что "Билайн" его не купит, и даже наши вряд ли Ага

Такие детали как раз и есть тренировка для мозгов - прикинуть, как приложение будет вести себя в разных ситуациях. Чтобы не было как в печальном афоризме Джеральда Вайнберга:
Цитата
Если бы строители строили здания так же, как программисты пишут программы, то первый же залетевший дятел разрушил бы всю цивилизацию.
Записан

Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
гайка
Гость
« Ответ #58 : 19-07-2011 20:52 » 

А изменения в него могут вноситься, или это просто "отображатель" данных только для чтения?
просто информационное окошко, что-то вроде отчета.
Цитата
Если бы строители строили здания так же, как программисты пишут программы, то первый же залетевший дятел разрушил бы всю цивилизацию
Хорошо сказано Улыбаюсь)

через пару недель, я думаю, закончу эту несуразность и выложу вам на растерзание Улыбаюсь
Записан
Страниц: 1 2 [Все]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines