Использование абстрактного класса в торговом портале - PullRequest
0 голосов
/ 27 июля 2010

Я знаю, что мой этот вопрос может показаться вам жалким, но как новичок в .NET он много значит для меня.

Я просто хочу знать, как я могу использовать концепцию абстрактного класса, виртуального класса и т. Д. На своем веб-сайте корзины покупок. Я прочитал туториал в интернете и тоже видел несколько примеров, но эти примеры настолько общие, что они не вписываются в реальный сценарий, как я ищу торговый сайт. Одни и те же вопросы снова и снова приходят мне на ум: зачем делать класс только для того, чтобы дать объявление методов и свойства.

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

Если возможно, пожалуйста, порекомендуйте мне хорошие книги по шаблонам проектирования asp.net, из которых я могу выучить шаблоны проектирования.

Заранее спасибо

Ответы [ 4 ]

2 голосов
/ 27 июля 2010

Ваш универсальный ресурс и руководство Head First - OOAD .

alt text http://i36.tinypic.com/8y6luo.jpg

1 голос
/ 27 июля 2010
1 голос
/ 27 июля 2010

Если вы не видите, зачем их использовать, то пока нет. Никогда не используйте шаблон дизайна только ради него.

Что касается их цели, однако, представьте, что вы хотите разрешить разные типы продуктов, но у вас никогда не будет чего-то, что является просто «Продуктом» - это всегда что-то конкретное, например «Книга» или «Автомобиль». В этом случае вы можете поместить общие свойства в абстрактный класс Product следующим образом:

public abstract class Product
{
    /* Abstract Price allows Car/Book to apply their own category discounts */
    public abstract decimal Price { get; }

    public string Title { get; }

    public void AddReview(int userId, string reviewText)
    {
        /* Add review */
    }

    public abstract List<Product> Recommendations(int userId);
}

которые затем могут расширять ваши классы Book и Car.

0 голосов
/ 27 июля 2010

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

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

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

Вы можете определить некоторые конкретные методы / свойства, такие как ItemId, ItemName, Price и т. Д. В классе CartItem, которые являются общими для всех типов элементов, а также вы можете определить некоторые из методов виртуально для которого у вас есть реализация по умолчанию, но дочерние классы могут переопределить реализацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...