| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > .NET для новичков > Инкапсуляция, наследование + полиморфизм |
| Автор: blackwitcher 18.5.2015, 11:30 |
| Create next classes: Cat, Dog and Petshop. Types Cat and Dog have fields Name and Breed and method Introduce() which prints text “I’m (Name) of (Breed). I’m a cat (or dog)”. The class Petshop collects in its container different pets. We may add new pet to container by method AddPet() and we may display information about all pets by method IntroduceAll(). P.S.: сам сделал, но не так как хотелось бы |
| Автор: infarch 18.5.2015, 18:08 |
| Задача от SoftServe? |
| Автор: diadiavova 19.5.2015, 11:52 |
Собака унаследована от кошки, а зоомагазин от собаки? Тебе надо создать абстрактный класс или интерфейс Pet. Собаки и кошки будут унаследованы от него(или, в случае интерфейса, он будет реализован в этих классах). Методы и свойства, присутствующие в обоих классах вынеси в базовый. А в зоомагазине создай свойство типа List<Pet>, в которое и загружай экземпляры обоих классов. Ну и для вывода на экран информации об экземплярах, просто вызывай метод, определенный в Pet. |
| Автор: blackwitcher 19.5.2015, 11:56 |
| спасибо, diadiavova |
| Автор: blackwitcher 19.5.2015, 11:56 |
| кое-что сделал, а дальше как - не знаю |
| Автор: diadiavova 19.5.2015, 12:59 |
Ну, уже неплохо, но метод интродьюс тоже надо вынести в базовый класс. И здесь одно из двух: либо сделать его абстрактным и определять в производных классах, либо в базовый класс добавить свойство, которое будет возвращать полседнее слово в тексте интродьюса и использовать значение этого свойства для генерации текста. А само свойство (видимо доступное только для чтения) уже переопределять в производных классах. Второй вариант логичен в силу того, что основной текст генерируется один и тот же, а меняется только последнее слово. В зоомагазин добавь поле List<Pet>, определи методы добавления и представления всех. Метод AddPet будет принимать питомца и добавлять его в список, а IntroduceAll - обходить всю коллекцию и вызывать у каждого элемента Introduce |
| Автор: blackwitcher 19.5.2015, 13:11 |
| спасибо, diadiavova |
| Автор: blackwitcher 19.5.2015, 13:30 |
| думаю, что так правильно? |
| Автор: baldina 19.5.2015, 14:03 | ||
не совсем
Добавлено через 53 секунды в Dog и Cat - override string Type() |
| Автор: blackwitcher 20.5.2015, 22:15 |
| Спасибо |
| Автор: blackwitcher 10.6.2015, 14:54 |
| всем спасибо, тема закрыта |