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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Интерфейсы, Help 
:(
    Опции темы
Saule
Дата 13.11.2006, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Help! 
Здравствуйте все, не могли бы вы мне помочь? Я уже не знаю к кому обратиться, вся надежда только на вас. Была бы оч. оч. благодарна! Я в си шарпе новичок, а задание надо сделать 
smile
А дело в том, что есть такое задание -  Допустим есть лиственные и хвойные деревья. Есть клены, ели и липы. Клены-допустим шумят, елки-зеленеют,  липы-роняют листья. Не обращайте внимание на абсурдность, это просто, чтобы было яснее, таким чайникам как я smile 
Так вот надо написать програмку, используя интерфейсы и наследование, чтобы сделать так - елка была лиственной. Спасибо зараннее за помощь, очень надеюсь и жду ответов, или просто советов по этому вопросу
PM MAIL ICQ   Вверх
nikitao
Дата 13.11.2006, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

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



Saule, извиняюсь, но 

Цитата(Saule @  13.11.2006,  14:57 Найти цитируемый пост)
, чтобы сделать так - елка была лиственной.


мне как не старайся не понять  smile 

Дайте пожалуйста задание в оригинале, а ту имхо ничего не ясно smile  . Обязательно поможем ;) 


ЗЫ Saule, если вы поместили топик в этой ветке , то за вас никто писать код целиком не будет. Если же вы хотите готовый код, то надо писать в Центр помощи


--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
SeekerMan
Дата 13.11.2006, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Бьюсь в истерике.  smile   Давай задание, будем садоводить.  smile 
PM MAIL   Вверх
Saule
Дата 13.11.2006, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Мне не надо всего кода, просто хотя бы шаблон какой, или пару советов ) Я просто не знаю.... Дано такое задание, примерно. И вот надо сделать елку лиственной, а я без понятия... вот и .. написала, сама не знаю чего smile
PM MAIL ICQ   Вверх
SeekerMan
Дата 13.11.2006, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Давай полный текст задания. Ты что-то упускаешь, а нам так очень тяжело понять. Поэтому и получется так смешно.
PM MAIL   Вверх
ivashkanet
Дата 13.11.2006, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

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



Цитата(Saule @  13.11.2006,  12:57 Найти цитируемый пост)
Допустим есть лиственные и хвойные деревья

Saule, полная иерархия классов выглядит так:
                    Дерево
      _________|___________
      |                                       |
ЛиственноеДерево          ХвойноеДерево

Так?

Если елки еще нет, то для того чтобы елка стала лиственной нужно наследовать ее от класса ЛиственноеДерево:

Код

namespace ЕлкиПалки
{
    public abstract class Дерево
    {
        //Реализация класса Дерево
    }

    public class ЛиственноеДерево : Дерево
    {
        // Реализация отличий ЛиственногоДерева от Дерева
    }

    public class ХвойноеДерево : Дерево
    {
        // Реализация отличий ХвойногоДерева от Дерева
    }


    // Получение класса Елка
    public class Ель : ЛиственноеДерево
    {
        // В принципе, Ель уже является Лиственным деревом, но можно добавить ему
        // доп. функциональность, которая будет присуща только Ели
    }
}

PM MAIL WWW ICQ   Вверх
nikitao
Дата 13.11.2006, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

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



ivashkanet, жжошь  smile 


--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
Saule
Дата 13.11.2006, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



ivashkanet, наверное что-то похожее. Но здесь надо еще как-то использовать интерфейсы, и наследование.... smile 
Всем спасибо за участие 
PM MAIL ICQ   Вверх
nikitao
Дата 13.11.2006, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

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



smile Че  такое лиственная елка???????

 smile 
Это то же самое,  что шушпанчика сделать СРУКОМ!!!!!

 smile 





Это сообщение отредактировал(а) nikitao - 13.11.2006, 16:26


--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
thomas
Дата 13.11.2006, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

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



Saule
Привет, прекрасная незнакомка.  smile 

По поводу наследования, ivashkanet четко написал в коде какой класс от какого наследуется.

public class ЛиственноеДерево : Дерево

Значёк двоеточия и обозначает что класс "Лиственное дерево" наследует свойства и методы класса "Дерево".

А что касается интерфейса, то посмотри тут




--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
ivashkanet
Дата 13.11.2006, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

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



По делу:
С наследованием мы разобрались (вернее у нас есть код smile )
Будем разбираться с интерфейсами:
Цитата(Saule @  13.11.2006,  12:57 Найти цитируемый пост)
Клены-допустим шумят, елки-зеленеют,  липы-роняют листья. 

Судя по логике: "умею шуметь", "умею зеленеть", "умею ронять листья" --- это интерфейсы (т.е. дополнительная функциональность, которую хочется реализовать в классе)
Определяем их:
Код

    public interface IШумящий
    {
        void Шуметь();
    }
    public interface IЗеленеющий
    {
        void Зеленеть();
    }
    public interface IРоняющийЛистья
    {
        void РонятьЛистья();
    }


Теперь если мы хотим чтобы наша Елка (которая лиственная) "научилась" зеленеть (как по условию), то нужно в нашем классе объявить и реализовать интерфейс IЗеленеющий:
Код

   public class Ель : ЛиственноеДерево, IЗеленеющий
    {
        // В принципе, Ель уже является Лиственным деревом, но можно добавить ему
        // доп. функциональность, которая будет присуща только Ели
        public void Зеленеть()
        {
            // Реализация метода Зеленеть
            // Например если бы в классе Дерево было бы поле Листя --- коллекция (набор)
            // всех листьев на дереве, а у листа было бы свойство СтепеньЗелености, то
            // мы могли бы реализовать метод так

            // Перебераем все листья Ели (так как Ель --- потомок Дерева у которого есть листья,
            // то и у нашей Ели есть листья)
            foreach (Лист лист in коллекцияЛистьев)
            {
                лист.СтепеньЗелености++;
            }
        }


Заметь, что при наследовании класса все свойства и методы родителя переходят его потомку (как коллекцияЛистьев из класса дерева перешла в класс Ели).
В наследовании (чаще говорят реализации) интерфейса приходиться реализовывать все методы интерфейса (в нашем случае возможность зеленеть).

Не совсем по делу:
Цитата(nikitao @  13.11.2006,  15:26 Найти цитируемый пост)
лиственная елка

nikitao, это называется абстракция. Ведь с чего ты взял, что Елка не лиственная?????
То что в твоем (нашем) мире это так? Ну и что  smile 
Компьютер ведь не живет в нашем мире, он не знает, что "Ель не может быть лиственнойsmile 
Он целиком полагается на нас smile 

С другой стороны. Часто в компьютерном мире нет аналогии с реальным, поэтому приходится придумывать такие объекты, на основе ОБЩИХ ЛОГИК, а не нашей, человеческой.
И лиственная елкаочень полезная задачка для раскрепощения нашего разума.
Она позволяет забыть, отказаться, вычеркнуть реальную аналогию из нашего мозга для решения задачи.
И т.д.



PM MAIL WWW ICQ   Вверх
nikitao
Дата 13.11.2006, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

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



Вот мое мнение по поводу понятия 
Цитата(Saule @  13.11.2006,  14:57 Найти цитируемый пост)
чтобы сделать так - елка была лиственной.


Я понимаю вообще это так. У нас есть обьект типа Елка,которая в свою очередь является наследником типа Дерево и реализует интерфейс IЗелеящий ( все как и описывал ivashkanet smile ) . Ну так вот этот обьект надо просто привести к лиственному типу smile . Но эт чисто мое восприятие этой фразы smile 


--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
ivashkanet
Дата 13.11.2006, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

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



Цитата(nikitao @  13.11.2006,  19:40 Найти цитируемый пост)
Ну так вот этот обьект надо просто привести к лиственному типу

А почему бы просто не попросить задание выполнится?
Приводить к типу можно только объект, который передается по ссылке родительского типа
Пример: Родитель  --> Наследник --> НаследникНаследника и отдельно стоит СовсемПостореннийОбъект.

Так вот, если ссылка родительского типа указывает на Наследник, то ее можно привести и к Наследнику и но никак не к НаследникуНаследника или к СовсемПостореннемуОбъекту:
Код

Родитель р = new Наследник();

Наследник н = (Наследник) р;

НаследникНаследника нн = (НаследникНаследника) р; // Не пройдет  :thumbs-up 

СовсемПостореннийОбъект спо = (СовсемПостореннийОбъект) р;  // Не пройдет


Тоже самое касается интерфейсов, учитывая что они являются частным случаем родителя.

P.S. По идее, объект ссылку на класс  НаследникНаследника можно привести как к НаследникНаследника так и к Наследник.
PM MAIL WWW ICQ   Вверх
nikitao
Дата 14.11.2006, 00:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

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



ivashkanet
Дык , а что мешает реализовать приведение типа в классах? smile 


ЗЫ Не честно, не пойму о чем разговор идет. Это как говорится рассматриваем сферического коня в вакууме smile 



--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
Saule
Дата 14.11.2006, 00:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Зайцы родные, всем спасибо за помощь и за участие. Безумно вам благодарна и шлю вам многочисленные "cпасибо". Все прошло отлично, без инфарктов и обомороков. Зачет сдан, сдан на 9.
Еще раз спасибо smile)))
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 




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


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

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