Re[16]: Override для произвольного метода.
От: Pavel Dvorkin Россия  
Дата: 11.12.08 06:04
Оценка:
Здравствуйте, IB, Вы писали:

IB>Иными словами, у тебя появился контрол, который ты можешь переиспользовать только с определенным типом строк, и ни с чем другим он работать уже не сможет, зашил логику проверки в UI, что является грубейшей ошибкой, так как ни протестировать толком, ни переиспользовать эту логику так же не получится, ну и финальный гвоздь в монолитность своего приложения ты забил, когда завязался на конкретную реализацию TextBox.

IB>Примерно так проектируют приложение люди познакомившиеся с основами ООП по книжкам, примерно месяц назад и теперь активно спешащие применить все новые фенечки на практике..

Неужели трудно понять , что этот пример просто-напросто придуман за 2 минуты, чтобы продемонстрировать суть того, о чем я говорю. А суть проста — мы можем породить некий новый класс A1 от существующего класса A, и некий новый класс B1 от существующего класса B. Внутри класса A1 будет использоваться класс B1, в то время как в классе A экземпляры B1 будут выглядеть как B. При этом не возникает необходимости в полиморфизме-виртуальности. Примеров таких на свете сколько угодно.

Вот, например класс CStringEx — расширяет стандартный класс CString из MFC

http://www.codeguru.com/cpp/cpp/string/ext/article.php/c2793

/////////////////////////////////////////////////////////////////
The constructors in the CStringEx class parallel the constructor in CString and in fact simply chains into the corresponding CString constructor. Some of the CStringEx functions use knowledge of the internal structure of the CString object so there is a small chance that these functions might break if the CString implementation changes.

The functions provided by CStringEx are quite easy to use and fairly simple to understand. The Insert() functions inserts a character or a sub-string within a string. The result is similar to inserting text in an edit control, the string is expanded to accommodate the sub-string. The Delete() function removes a segment from the string and shortens it. The Replace() function removes a sub-string and replaces it with another. Again, the string size is adjusted depending on the size of the sub-string that was removed and the size of the sub-string that was inserted.

The find family of functions, finds a sub-string in the forward or the reverse direction. The NoCase version of these functions are case insensitive. The FindReplace() and FindReplaceNoCase() functions searches for a sub-string and replaces the matching sub-string with another string. The GetField() and GetDelimitedField() functions find a token in the string. The table below exemplifies the uses of these functions.
/////////////////////////////////////////////////////////////////

Естественно, внутри каркаса MFC экземпляры CStringEx выглядят как CString. Но в нем есть дополнительные средства, которые удобны.




PD>>Что у вас за дурная манера , господа, называть все, с чем вы не согласны, бредом ?

IB>Мы с этим не просто не согласны, мы знаем, что так делать нельзя и даже пытаемся тебе объяснить почему, но очевидно бесполезно... =)

Ну тогда объясни это же тем, кто написал этот класс и кто его использует.
With best regards
Pavel Dvorkin
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.