Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

C++ Списки и наследование.Зарание спасибо! - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ STL vector,list http://www.cyberforum.ru/cpp-beginners/thread42362.html
У меня 2 вопроса: 1) можете рассказать,как подробно работает reverse_iterator?Создал вектор,хочу его распечатать в обратном порядке следования индексов,а он мне вообще то ошибку выдает,что я вышел...
C++ Уменьшение значений элементов матрицы(перегрузка операции "--") Задача Перегрузите операцию "--" позволяющую уменьшать переменную типа матрица на 1. В результате каждылемент матрицы должен уменьшаться на 1. Хм, можете ли написать мне код готовой программы. http://www.cyberforum.ru/cpp-beginners/thread42334.html
Ключевые слова C++
Написать программу, которая при вводе с клавиатуры буквы выводит ключевое слово языка Си, начинающееся с данной буквы. Например, при введении буквы "b" печатает "break". Результаты поместить на экран...
C++ Слова в обратном порядке (!не палиндром!)
Задача состоит в следующем: определить символьный массив и ввести его с клавиатуры, затем подсчитать колличество символов 'e' (с этим проблем нет, но из программы уже не выкину) и выести слова в...
C++ Двумерный массив http://www.cyberforum.ru/cpp-beginners/thread42187.html
Создать двухмерный массив целых чисел. Испольуя массив указателей. записать в него адресса положительных елементов двухмерного масива. Пожалуста я на экзамене!!
C++ Как возвращать массив структур? Понимаю тема уже поднималась, но я всёравно не могу понять... Нужно возвратить массив из структур. Знаю что нужно делать через указатели... вот код: struct trgstr { char name; int x; подробнее

Показать сообщение отдельно
CyBOSSeR
Эксперт С++
2303 / 1673 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
30.06.2009, 20:19
Хорошо, давай с самого начала.
То что ты написал - бред.
Давай разбираться.
1. Наследование, это отношение между классами когда один (производный) класс наследует (копирует) структуру и поведение другого (базового) класса.
Разберемся на простом примере:
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
// Базовый класс
class Base
{
public:
  int Foo();
};
 
// Класс производный от Base
// Он уже содержит функцию Foo, т.к. копирует ее из базового класса Base
class Derived : public Base
{
public:
  int Bar();
};
 
int main()
{
  Base base;
  Derived derived;
 
  base.foo();    // OK
  derived.foo(); // OK (foo копируется из базового класса)
  derived.bar(); // OK
  
  base.bar();    // Ошибка, т.к. операции bar нет в описании класса Base 
}
С учетом вышесказанного, исправляем ошибки в классах студента и аспиранта (а заодно забываем про существование транслита и открываем английский словарь, дабы твой код мог понять программист даже из Китая):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Student
{
public:
  Student();
  ~Student();
 
  Student(char*, char*, char*, char*);
  void Print();
};
 
class PostGraduateStudent : public Student
{
public:
    PostGraduateStudent();
    PostGraduateStudent(char*,char*,char*,char*);
    ~PostGraduateStudent();
};
Мы специально пока не описываем закрытую и защищенную части, потому что мы должны разработать в первую очередь интерфейс (поведение) класса, а уж потом при необходимости добавить все что нужно для поддержки поведения класса.
2. Идем далее...
Что означает операция Print? Распечатать студента? Это не присущая студентам операция, убираем...
3. Если у меня есть объект класса Student, как я получу информацию о нем (имя, фамилию)? В твоей версии - никак!
Добавляем операции, которые позволяют получить интересующую нас информацию. Кто он аспирант или студент, пока не рассматриваем.
4. Студент может сменить имя, фамилию (например при регистрации брака). Т.е. необходимо внести в класс Student операции позволяющие производить такие действия.

С учетом п. 2, 3 и 4, получаем
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Student
{
public:
  Student();
  Student(char*, char*, char*); 
  
  ~Student();
 
  const char* Surname () const;  // возвращает фамилию студента
  const char* Name    () const;  // возвращает имя студента
  const char* Lastname() const;  // возвращает отчество студента
 
  void SetSurname (const char*); // Установка новой фамилии
  void SetName    (const char*); // Установка нового имени
  void SetLastname(const char*); // Установка нового отчества
private:
  ... 
};

Не по теме:

Блин, что то я расписался...
Позже продолжу, если тебе интересно...


А вообще книга Г. Буч - Объектно-ориентированный анализ и проектирование - то, что нужно, если тебе интересна тема ООП.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru