Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
1 / 1 / 0
Регистрация: 12.08.2011
Сообщений: 29
1

Наследование: "БГТУ", "Факультет", "Группа", "Подгруппа"

29.08.2011, 16:48. Просмотров 1354. Ответов 10
Метки нет (Все метки)

Определить иерархию классов (в соответствии с вариантом – выделить базовый и производные). Реализовать классы (самостоятельно задать члены-данные и методы класса). Написать демонстрационную программу, в которой создаются объекты различных классов. Определение классов(*.h), их реализацию(*.cpp), демонстрационную программу(*.cpp) поместить в отдельные модули.
Классы - БГТУ, факультет, группа, подгруппа;
Нужна помощь!!!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.08.2011, 16:48
Ответы с готовыми решениями:

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно"
В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло",...

Реализовать классы "Воин", "Пехотинец", "Винтовка", "Матрос", "Кортик" (наследование)
Разработать программу с использованием наследования классов, реализующую классы: − воин;...

Для каждой строки найти слова, которые не имеют ни одного из букв: "l", "k", "r", "s" i "j"
Задано символьные строки. Строка состоит из нескольких слов (наборов символов), которые разделяются...

Создать класс "Книга" с полями "название книги", "количество страниц", "год издания"
Создать класс Книга поля: название книги,количество страниц,год издания методы: вычислить сколько...

10
Заблокирован
29.08.2011, 17:58 2
Лучший ответ Сообщение было отмечено как решение

Решение

не нужна вам помощь, вам нужна халява
10
1 / 1 / 0
Регистрация: 12.08.2011
Сообщений: 29
30.08.2011, 11:17  [ТС] 3
Вот что у меня
Определение классов
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#pragma once
 
class BSTU
{
    BSTU();
    ~BSTU();
    char* getN();
    void setN(char *name_);
    void print();
 
    char *name;
};
 
class Facultet:public BSTU
{
public:
    Facultet();
    ~Facultet();
    char* getC();
    void setC(char *cafedra_);
    void print();
 
    char *cafedra;
};
 
class Grupa:public Facultet
{
public:
    Grupa();
    ~Grupa();
    int get Nom();
    void setNom(int nomber_);
    void print();
 
    int nomber;
};
 
class Podgrupa:public Grupa
{
public:
    Podgrupa();
    ~Podgrupa();
    void print;
};
BSTU.cpp

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include "StdAfx.h"
#include "classes.h"
 
BSTU::BSTU(void)
{
    name=NULL;
    std::cout<<"BSTU CONstructor!!!"<<std::endl;
}
 
BSTU::~BSTU(void)
{
    name=NULL;
    std::cout<<"BSTU DEstructor!!!"<<std::endl;
}
 
char* BSTU::getN()
{
    if (!name)
        return NULL;
    char* st;
    st=new char [strlen(name)+1];
    strcpy(st,name);
    return st;
}
 
void BSTU::setN(char *name_)
{
    if (name)
        delete name;
    name=new char [strlen(name_)+1];
    strcpy(name,name_);
}
 
void BSTU::print()
{
    std::cout<<"________________"<<std::endl;
    std::cout<<"BSTU name: "<<getN()<<std::endl;
    std::cout<<"________________"<<std::endl;
}
Facultet.cpp

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include "StdAfx.h"
#include <iostream>
#include "classes.h"
 
Facultet::Facultet(void)
{
    name=NULL;
    cafedra=NULL;
    std::cout<<"Facultet CONstructor!!!"<<std::endl;
}
 
Facultet::~Facultet(void)
{
    name=NULL;
    cafedra=NULL;
    std::cout<<"Facultet DEstructor!!!"<<std::endl;
}
 
char* Facultet::getC()
{
    if (!cafedra)
        return NULL;
    char* st;
    st=new char [strlen(cafedra)+1];
    strcpy(st,cafedra);
    return st;
}
 
void Facultet::setC(char* cafedra_)
{
    if (cafedra)
        delete cafedra;
    cafedra=new char [strlen(cafedra_)+1];
    strcpy(cafedra,cafedra_);
}
 
void Facultet::print()
{
    std::cout<<"============================="<<std::endl;
    std::cout<<"Facultet name: "<<getN()<<std::endl;
    std::cout<<"Facultet cafedra: "<<getC()<<std::endl;
    std::cout<<"============================="<<std::endl;
}
Grupa.cpp

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include "StdAfx.h"
#include <iostream>
#include "classes.h"
 
Grupa::Grupa(void)
{
    name=NULL;
    nomber=0;
    std::cout<<"Grupa CONstructor!!!"<<std::endl;
}
 
Grupa::~Grupa(void)
{
    name=NULL;
    nomber=0;
    std::cout<<"Grupa DEstructor!!!"<<std::endl;
}
 
void Grupa::setNom(int nomber_)
{
    nomber=nomber_;
}
 
int Grupa::getNom()
{
    return nomber;
}
 
void Grupa::print()
{
    std::cout<<"============================="<<std::endl;
    std::cout<<"Grupa name: "<<getN()<<std::endl;
    std::cout<<"Grupa nomber: "<<getNom()<<std::endl;
    std::cout<<"============================="<<std::endl;
}
Podgrupa.cpp

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "StdAfx.h"
#include "classes.h"
 
Podgrupa::Podgrupa(void)
{
    nomber=0;
    std::cout<<"Podgrupa CONstructor!!!"<<std::endl;
}
 
Podgrupa::~Podgrupa(void)
{
    number=0;
    std::cout<<"Podgrupa DEstructor!!!"<<std::endl;
}
 
void Podgrupa::print()
{
    std::cout<<"============================="<<std::endl;
    std::cout<<"Podgrupa nomber: "<<getNom()<<std::endl;
    std::cout<<"============================="<<std::endl;
}
Сама программа
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
// Task_2.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include <iostream>
#include "classes.h"
 
 
using namespace std;
 
void main()
{
    BSTU a;
    Facultet b;
    Grupa c;
    Podgrupa d;
 
    a.setN("Belorussian State Technological University");
    a.print();
 
    b.setN("IDIP");
    b.setC("ISiT");
    b.print();
 
    c.setN("ISiT");
    c.setN(1);
    c.print();
 
    d.setNom(2);
    d.print();
 
    system("pause");
 
}
Выдает кучу ошибок!!
Помогите, не знаю в чем проблема
0
Заблокирован
30.08.2011, 11:34 4
да ну какое же тут наследование. Обычное агрегирование. Ну как можно унаследовать так? У тебя факультет является университетом, группа является и факультетом и университетом соответсвенно, ну и подгруппа является всем вышеперечисленным. Бред. В обратную сторону тоже нельзя ничего унаследовать. Можно ввести ещё классы, типа University, AbstractGroup и тд и от них как то наследоваться. И ещё ты используешь char* вместо string...

Добавлено через 1 минуту
и ещё забыл добавить не пиши транслитом в своих программах
1
silent_1991
30.08.2011, 11:46
  #5

Не по теме:

LosAngeles, да это ещё что, зачастую преподы просят, чтобы машина была колесом, а здание - фундаментом...

0
1 / 1 / 0
Регистрация: 12.08.2011
Сообщений: 29
30.08.2011, 12:41  [ТС] 6
делала по примеру данному преподавателем,поэтому так и получилось
0
Заблокирован
30.08.2011, 12:52 7
вобщем так и скажи ему - к тому набору классов, что он дал применить наследование очевидно невозможно. Может это такое задание-ловушка, как на собеседованиях иногда спрашивают - наследовать прямоугольник от квадрата или квадрат от прямоугольника?

или как я уже говорил добавить ещё классы, типа AbstractUniversity->StateUnivesity->BSTU, ну или чтото вроде того
0
Эксперт С++
5037 / 3097 / 271
Регистрация: 11.11.2009
Сообщений: 7,047
30.08.2011, 12:59 8
Цитата Сообщение от LosAngeles Посмотреть сообщение
применить наследование очевидно невозможно
Ну почему же, возможно. Только идейно неверно, а этот аргумент ещё сильнее.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
10842 / 6681 / 1614
Регистрация: 25.07.2009
Сообщений: 12,446
30.08.2011, 15:17 9

Не по теме:

Цитата Сообщение от Nadinka______ Посмотреть сообщение
делала по примеру данному преподавателем,поэтому так и получилось
Ещё совсем недавно не поверил бы, но уж как-то подозрительно часто такие чУдные решения "от препода" всплывают...



Nadinka______, Если есть желание всё-таки более-менее по-людски это сделать, пробуйте идти "от общего к частному". К примеру:
Базовый класс "Учебное заведение" включает поля "Название", "Количество преподавателей", "Количество учащихся"
Наследующий класс "Университет" включает дополнительно список/массив факультетов
Класс "Факультет" включает опять же название, список групп и список преподов
По такому же принципу строится класс "Группа" от абстрактного класса "Толпа народа" например...
Ну и для полноты ощущений от класса "Персона" с ФИО, годом рождения и размером противогаза наследуются два класса - один "Препод", второй "Студент"...
На вскидку как-то так, для наглядности можно всё это на бумажке нарисовать и стрелочками соединить, что от чего наследуется, а что во что включается...
1
1 / 1 / 0
Регистрация: 12.08.2011
Сообщений: 29
10.10.2011, 13:16  [ТС] 10
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
class TObject 
{ 
    public: 
        virtual void Show()=0;
}; 
 
class TDepartment:public TObject   // абстрактный класс-группа 
{ 
    protected:
        char name[20];  // наименование 
        TPerson* head;  // руководитель
        TItem* last;    // указатель на начало связанного списка структур TItem 
    public:
    TDepartment(char*,TPerson*);   
        TDepardment(TDepartment&);   
        ~ TDepartment();                       
        char* GetName();        
        TPerson* GetHead(); 
        void SetName(char* NAME);   
        void  SetHead(TPerson* p);     
        void Insert(TObject* p);          
        virtual void Show()=0;  
};
 
class TPerson:public TObject
{
    protected: 
        char name[20];    //имя субъекта
                int age;          //возраст
        public:
            TPerson();   
                TPerson(TPerson&);   
                ~ TPerson();            
};
Абстрактный класс TObject - вершина иерархии, от него наследуются абстрактный класс TPerson и абстрактная группа TDepartament. TPerson включает в себя объекты TStudent, TPrepod, TDepartament соответсвенно TBSTU, TFacultet, TGroup

Я по правильному пути иду??
Я создала
0
445 / 208 / 21
Регистрация: 07.10.2011
Сообщений: 462
10.10.2011, 13:43 11
Вот это уже лучше, только TPerson НЕ включает в себя объекты TStudent, TPrepod, а последние 2 класса наследуются от TPerson. Тоже самое про TDeparment и остальные
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.10.2011, 13:43

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Создать абстрактный класс "Издание" и производные классы "Книга", "Статья", "Электронный ресурс"
1. Создать абстрактный класс Издание с методами, позволяющими вывести на экран информацию об...

Создать класс "Вентилятор" содержащий в себе классы: "Двигатель", "Контроллер", "Пульт управления"
Помогите с кодом написания задачи, не понимаю как написать классы в классе. Нужно создать класс...

Определить тип данных "Запись", имеющий поля "Фамилия", "Пол", "Зарплата"
определить тип данных запись имеющий поля фамилия пол зарплата. определить массив из 10 записей. в...

Базовый класс "Изделие" и производные классы "Мышь", "Клавиатура", "Монитор"
/*Создать класс изделие, с полями себестоимость, цена, время выполнения, стоимость нормочаса и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.