Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как создать вложненность одного метода в другой? чтобы работало такое: pr.raz.dva() 
:(
    Опции темы
St33l
Дата 28.3.2009, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 16.6.2007

Репутация: нет
Всего: нет



не могу понять, как реализовывается вложенность. необходимо реализовать подобное:
есть 2 вида продукта, пускай А и Б. Для каждого продукта необходимо подсчитать определенные величины.
Думал реализовать так:
1. создаем класс
2. в классе создаем 2 метода: А и Б.
3. в методе еще нужные нам методы (уже считающие)

но не получилось что-то такое. как правильно такие вещи делать?
PM   Вверх
-Mikle-
Дата 28.3.2009, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 17
Всего: 59



Методы вложенными (в твоем смысле) не бывают никогда и нигде.
То что тебе нужно - классическая задача...

В "тупом" варианте это может выглядеть так:
Код

public class ClassA
{
    public void SomeMethod()
    {
        Console.WriteLine("ClassA.SomeMethod()");
    }
}

public class ClassB
{
    public void M1()
    {
        Console.WriteLine("ClassB.M1()");
    }
}

public class Products
{
    public readonly ClassA A = new ClassA();
    public readonly ClassB B = new ClassB();
}


Используешь так:
Код

    Products p = new Products();
    p.A.SomeMethod();
    p.B.M1();


Но на практике так делать не годится. Это только для примера, чтоб ты понял, о чем ты спрашиваешь.
На практике должно быть в зависимости от задачи. Типично так:

1. создаем базовый абстрактный класс для всех продуктов (ProductBase)
2. создаем еще два класса ProductA и ProductB наследованных от первого
3. создаем класс ProductManager, который будет оперировать классами ProductBase (НЕ конкретными ProductA и ProductB)

В последнем варианте все становится расширяемым и готовым в любой момент времени принять новые реализации продуктов (ProductBase)


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
St33l
Дата 28.3.2009, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 16.6.2007

Репутация: нет
Всего: нет



а можно какой-нибудь простенький пример для лучшего усвоения? smile
PM   Вверх
Partizan
Дата 28.3.2009, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 18
Всего: 67



St33l, 

Код

public interface IProduct
{
     int GetValue();
}


Код

public class ProductA : IProduct
{
   int GetValue() { return 100; }
}



Код

public class ProductB : IProduct
{
   int GetValue() { return 200; }
}


Код

...
public  int GetProductValue(IProduct prod)
{
    return prod.GetValue();
}
...

...
  ProductA p1 = new ProductA();
  ProductB p2 = new ProductB();
  int a = GetProductValue(p1);//100
  int b = GetProductValue(p2);//200
...


Это сообщение отредактировал(а) Partizan - 28.3.2009, 20:48


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.1271 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.