Сомневаюсь с реализацией интерфейсов - PullRequest
0 голосов
/ 21 октября 2010

Во-первых, это всего лишь вопрос объектно-ориентированного программирования, который не относится ни к какому конкретному языку.

Это довольно стыдно для меня. Этот инцидент произошел на работе, и я стеснялся разъяснять это моим коллегам, поскольку это указывало бы на плохое понимание объектно-ориентированного программирования с моей стороны. Итак, вот инцидент:

Существует класс A, который реализует интерфейс I. Этот интерфейс имеет метод M. Класс A определил тело или, скорее, реализацию этого метода. Теперь у меня есть инструмент, с помощью которого я могу узнать, какой другой класс или программа использует, или, другими словами, вызывает класс A -> метод M. Когда я использовал этот инструмент, он не дал никаких результатов; Признак, который я принял как отсутствие класса, - это вызов метода M.

Когда я поделился своими наблюдениями со старшим коллегой, он просто пошел к интерфейсу I -> метод M и использовал инструмент для этого. Вернулось немало результатов. Он сказал мне, что это классы или методы, которые вызывают метод М., и попросил меня продолжить.

Этот результат, очевидно, является списком тех классов, которые реализуют интерфейс I. Но что я не понял, так это как набор классов или методов, которые вызывают класс A -> метод M. Поскольку я с уверенностью сказал своему коллеге, что ни один класс не вызывает метод M, после того, как он показал мне список результатов, я Я был слишком смущен, чтобы спросить его, каков результат, который я ищу.

Есть идеи, на что намекает мой коллега?

С уважением, Митхун

Ответы [ 3 ]

6 голосов
/ 21 октября 2010

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

void someMethod (ISomeClass intobject)

вместо

void someMethod (SomeClass obj)

поэтому, когда вы пытаетесь вызвать метод в ISomeClass / SomeClass с именем myMethod в someMethod, это на самом деле

 intobject.myMethod()

Следовательно, все случаи использования myMethod относятся к ISomeClass, а не к SomeClass

Редактировать: Может быть, это только я, но я всегда верю, что когда ты чего-то не понимаешь, лучше открыть рот, чтобы задать вопрос и ошибочно принять себя за дурака, чем держать его на замке и доказать, что он один!

5 голосов
/ 21 октября 2010

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

Я думаю, что вы видите, что ничто не использует Класс A -> M, но есть другие реализации I, которые используют M. Инструмент, найденный там, где M используется другими реализациями.

1 голос
/ 21 октября 2010

Когда я использовал этот инструмент, он не дал никаких результатов;Признак, который я принял за отсутствие класса, - это вызов метода М.

Не значит ли это, что результаты?

Но что я не понял, так это какнабор классов или методов, которые вызывают класс A -> метод M.

Это действительно то, что означают результаты?

Как работает этот инструмент?Что означают результаты?Не уверен, что это ООП, которого ты не понимаешь, или просто этот магический инструмент?

...