| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Центр помощи > [C++] Наследование |
| Автор: Ambition 20.8.2007, 09:33 |
| Необходимо написать программку на С++ по теме Наследование. Не могу даже оттолкнуться от чего-либо Имеется 3 исходные кафедры: Экономики, Права и Управления информационными ресурсами. На каждой кафедре работает коллектив преподавателей, причем каждый имеет свою должность, звание, стаж работы, семейное положение. Вывести всех преподавателей, имеющих многодетные семьи (больше 2-ух детей). Заранее спасибо, кто ответит |
| Автор: sentry 20.8.2007, 09:45 |
| Не понял, где тут наследование? Есть кафедра, есть преподаватель. Но кафедра это не преподаватель, а преподаватель это не кафедра К тому же по кафедрам вообще никаких данных, кроме названия нет. Да и вообще условие не понятно: нужно вывести всех многодетных преподавателей, зачем тут вообще кафедры? |
| Автор: MAKCim 20.8.2007, 09:51 |
| Ambition если нет хоть каких-то своих идей, тебе в центр помощи за тебя тут делать ничего не будут |
| Автор: Earnest 20.8.2007, 09:52 |
| Для домашних заданий, курсовых, существует "Центр Помощи". Тема перенесена! |
| Автор: Ambition 20.8.2007, 09:56 |
| Сори, забыла, что мне в Центр надо было. А программа должна быть написана по теме Наследование!!!! |
| Автор: Greeen 20.8.2007, 10:08 |
| Ambition, но это же бред будет. Тут наследованием и не пахнет. Имеем структуру "преподаватель" и класс кафедры с вектором этих самых преподавателей. Где тут наследование влепить не представляю. |
| Автор: Ambition 20.8.2007, 10:13 |
| Вот, я над этим думала. В условии просто задано на эту тему, видимо ты прав. Тогда тему Наследование опустим. Ниписать, не опираясь на нее |
| Автор: Greeen 20.8.2007, 11:23 | ||
|
| Автор: Ambition 20.8.2007, 11:46 | ||
Пасибки, буду разбираться
|
| Автор: Arks 20.8.2007, 14:30 |
| Greeen, не подскажите, а где вы в вашем примере использовали наследование? |
| Автор: Ambition 20.8.2007, 14:35 |
| Arks, Greeen писал, что "наследованием" тут и не пахнет вовсе, поэтому писалась она без него |
| Автор: Arks 20.8.2007, 14:53 | ||
| В принципе можно. Раз сказано наследование, значит будет оно: Можно создать класс кафедра, и от него наследовать три различных её вида, а в каждом добавить какое-нибудь уникальное поле. Бред, конечно, но раз препод требует
А вот это я проглядел. |
| Автор: Rockie 22.8.2007, 13:13 | ||||
У нас есть преподаватели. У каждого есть имя и какое-то количество детей. Поэтому преподавателей можно, как уже сказали раньше, оформить в структуру. Нечто вроде
У нас есть 3 кафедры. Но каждая кафедра имеет общие с другой особенности: у нее есть ЗавКаф(..НифНиф, НафНаф
И далее просто наследуем от класса кафедры класс Экономической кафедры, Управленческой и тд. Таким образом мы получим 3 кафедры с однообразным набором данных, но тем не менее разных(на кафедре экономики можно добавить одни предметы, на другую - другие). Ну и, само собой, по типу указателя можно будет определить, к какой кафедре какой преподаватель относится. |
| Автор: Ambition 5.9.2007, 17:01 |
| Так может кто начиркает кодик с Наследованием, такое поставили условие |
| Автор: apook 5.9.2007, 18:08 | ||
кафедра это не преподаватель, а вот преподаватель как-раз кафедра! |
| Автор: Xenon 5.9.2007, 19:55 |
| Наследование-то бывает и делигированием и включением и классическим У Кафежры есть преподователь ... HAS наследование, то есть включением |
| Автор: JackYF 5.9.2007, 22:57 |
не, ну это же не наследование. Если я принес в квартиру комп, то квартира от компа никак не наследуется |
| Автор: apook 5.9.2007, 23:38 | ||
Но компьютир может стать потомком квартиры.И тогда его комплектующие смогут обращаться ко всему что есть в квартире как к своему имуществу.. ;) |
| Автор: JackYF 6.9.2007, 01:48 | ||
гы. а если там (в классе Квартира) был private-доступ? тогда фиг ;) |
| Автор: apook 6.9.2007, 06:44 |
| ааа конечно ты знал... а друзья? будет ли класс-друг считаться потомком? |
| Автор: JackYF 6.9.2007, 09:29 |
| Автор: Fantasist 6.9.2007, 11:10 | ||
| А че там, наследование всегда можно ввинтить создав общий предок - типа CObject. Объект типа. Ну можно еще повыпендриваться. Например
Так что главное фантазия и широкое мышление, можно вполне что-то разумное сделать. |
| Автор: Rockie 6.9.2007, 13:00 |
Квартира и комп - это композиция. Квартира _содержит_ компьютер, но компьютер _не является_ квартирой. "Является ли?" и "Содержит ли?" этих вопросов обычно должно хватать чтобы отделить наследование от композиции. |
| Автор: sentry 6.9.2007, 15:04 |
Отличаем наследование от композиции(делегирования), ага? Интересно, как это преподаватель унаследует от кафедры св-ва, присущие только кафедре |
| Автор: Xenon 6.9.2007, 15:54 |
| JackYF, ну просто есть абстрактно термин НАСЛЕДОВАНИЕ. Оно бывает разным. Классическое наследование IS A - это, с последующим отношением тип/субтип. А бывает наследование включением - HAS A, когда ты что имеешь. Но все это же общим словом наследованием именуется. |
| Автор: JackYF 6.9.2007, 16:56 | ||
Ну дык а я о чем у меня режет язык, мозги и всё что угодно от такой трактовки... можно ссылку, где оно так именуется? |
| Автор: apook 6.9.2007, 17:11 | ||||
Да как раз смысл не важен можно даже не компьютер а дорога причем она-ж не в квартире а ведь будет наследовать напишешь:
и пошла дорога знать что в квартире есть |
| Автор: sentry 6.9.2007, 18:29 | ||
Да наследовать-то будет. Только не надо так делать. Нехорошо это Вроде Троелсен (правда С#, но это не суть важно). |
| Автор: Fantasist 6.9.2007, 20:26 | ||
Да ну фигня какая. Выбрось те источники где так именуется. Это так совершенно можно запутаться. Все таки нормально различают наследование и композицию. Наследование - это создание подтипа, композиция - это просто отдельный тип с включенными объектами. И это достадочно разные разные подходы, несмотря на то, что при полном делегированнии включенных объектов по использованию это не будет отличатся от наследования (правда в этом случае, возможно, множественного, что тоже не во всех языках реализуемо). А вообще есть еще термин агрегирование, который по сути мало чем отличим от композиции, в распостранненом понимани, как я понял. Некоторые источники говорят, что при композоции время жизни объектов жестко привязванно, а при агрегации нет. То есть при композиции главные является хозяином всех включенных объектов, а пре агрегировании они могут добавлятся и убираться от туда свободно. Правда в моей практике, случае везде где я встречал агрегацию, она совершенно не отличались от композиции. Так что я вообще привык это агрегацией называть. Некоторые опять же утверждают, что если объект содержит вектор других объектов, то это тоже агрегация. А по мне так это типичный контейнер. Для меня агрегация так же как и композиция - это отношение один к одному. Короче, терминология и так запутанна, не надо ее еще больше запутывать называя все наследованием. Добавлено через 2 минуты и 42 секунды О кстати! Глянте сюда: http://en.wikipedia.org/wiki/Composite_pattern#Example Оказывается тот пример, что я написал предыдущим постингом один в один Composite pattern. Добавлено через 3 минуты и 48 секунд Вот как много можно сделать из обыкновенной туповатой школьной задачи. |
| Автор: Xenon 7.9.2007, 23:10 |
| Термин "наследование включением" режет слух? У Коплиена вроде так. Fantasist, разницы между агрегированием, композицией и делигированием в С++, как мне кажется, нет вообще PS. Ага, а вообще каждый второй класс - это паттерн Декоратор |