Зависимость класса и иерархия - PullRequest
0 голосов
/ 24 марта 2011

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

В VBA и VB6 я часто видел, как ClassB может стать действительным объектом только через метод ClassA. Например, наборы записей ADO становятся заполненными или доступными только через метод объекта Connection. Объект File становится действительным только через метод OpenFile объекта FileSystemObject (никогда не называйте ваш объектный объект).

Какая теория управляет этим типом «структуры» и какой термин используется для обозначения этого? Я предполагаю, что это нечто отличное от базовых классов и наследования. Является ли этот тип иерархии чем-то, что мне, вероятно, понадобится при создании собственной бизнес-логики и классов слоя доступа к данным при программировании базы данных в .NET?

Ответы [ 3 ]

1 голос
/ 24 марта 2011

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

FileSystem {
   File openFile(String path);
}

FileSystem является создателем, или Factory для файлов.

Я считаю полезным разделить ихдве стороны мышления: что может этот объект сделать?Где взять один из этих объектов.

Чтобы ответить на ваш комментарий к вашему вопросу:

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

Вы начинаете замечать, что определенные фрагменты кода не принадлежат создаваемому классу (например, речь идет о множестве файлов, а не об одном файле).и при этом он не принадлежит к классу, который хочет использовать созданный класс, потому что тогда код потенциально будет дублирован во многих частях кода (любой, кто хочет файл), так что есть необходимость передать ответственность некоторому классу.Ага, это Фабрика.

0 голосов
/ 24 марта 2011

Вы говорите о Шаблон проектирования фабрики .

Фабрики полезны, когда вам необходимо абстрагировать логику создания возражений от функциональности самого объекта.

0 голосов
/ 24 марта 2011

Редактировать: кажется, у него есть имя, иди с другими ответами ..

Нет реального имени для него, что происходит, когда метод, который вы вызываете, возвращает определенный объект того типа, который вы хотели иметь (т.е. метод OpenFile возвращает объект типа File).

Обычно в .Net есть больше способов получить экземпляр определенного типа, проще всего просто сказать SomeClass myInstance = new SomeClass();, чтобы создать новый объект.

Шаблон, который вы описываете, тоже существует, например, FolderInfo.GetFiles () возвращает массив объектов FileInfo.

Так что нет реальной теории, управляющей этим, это просто базовое объектно-ориентированное программирование. (Или это будет руководящая теория).

GJ

...