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

Абстрактный тип данных - C++

Восстановить пароль Регистрация
 
IrinaCk
 Аватар для IrinaCk
0 / 0 / 0
Регистрация: 13.03.2013
Сообщений: 27
08.04.2013, 07:28     Абстрактный тип данных #1
Помогите пожалуйста вот с таким задание: Создать абстрактный тип данных - человек, у которого есть имя и возраст (структура). Определить функцию, которая устанровит имя и возраст по умолчанию. Заранее спасибо за помощь.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11841 / 6820 / 771
Регистрация: 27.09.2012
Сообщений: 16,911
Записей в блоге: 2
Завершенные тесты: 1
08.04.2013, 08:33     Абстрактный тип данных #2
STL?
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
08.04.2013, 08:42     Абстрактный тип данных #3
Цитата Сообщение от IrinaCk Посмотреть сообщение
Создать абстрактный тип данных - человек
Абстрактный тип данных это такой тип данных, который предоставляет функции для работы с данными, но не реализует их.

Абстрактный тип данных:
C++
1
2
3
4
class Human {
 public:
  virtual const std::string &getName() const = 0;
};
Не-абстрактный тип данных:
C++
1
2
3
4
5
6
class Human {
 public:
  const std::string &getName() const { return name; }
 private:
  std::string name;
};
Цитата Сообщение от IrinaCk Посмотреть сообщение
структура
Абстрактный тип данных -- структура!? В смысле, что структурой удобнее, потому что методы по-умолчанию публичные?

Цитата Сообщение от IrinaCk Посмотреть сообщение
Определить функцию, которая устанровит имя и возраст по умолчанию.
С одной стороны, можно сделать класс, который будет абстрактным, но реализовывать некую функцию, с другой стороны, если эта функция единственная, то смысл как-бы теряется.



Фиг знает, короче, что вам там надо сделать.
Наверно, вот такой код не будет сильно противоречить условиям.
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
#include <iostream>
#include <string>
 
struct Human {
 public:
  virtual ~Human() = 0;
  const std::string &getName() const { return name; }
  int getAge() const { return age; }
  void setDefaultData() {
    name = "default";
    age = 0;
  }
 private:
  std::string name;
  int age;
};
Human::~Human() {};
 
 
struct Man : public Human {
};
 
int main(int argc, char *argv[]) {
  //Human h; // не получится, класс абстрактен
  Man m; // получится
 
  std::cin.get();
  return 0;
}
IrinaCk
 Аватар для IrinaCk
0 / 0 / 0
Регистрация: 13.03.2013
Сообщений: 27
08.04.2013, 08:42  [ТС]     Абстрактный тип данных #4
хоть как, нам дано задание и не сказано как сделать, главное его выполнить, чтобы программа сработала.
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
08.04.2013, 08:43     Абстрактный тип данных #5
Цитата Сообщение от IrinaCk Посмотреть сообщение
главное его выполнить, чтобы программа сработала.
В задании ни слова о том, что программа должна что-то делать. Там даже не сказано, что это должна быть программа, а не просто заголовочный файл.
IrinaCk
 Аватар для IrinaCk
0 / 0 / 0
Регистрация: 13.03.2013
Сообщений: 27
08.04.2013, 08:44  [ТС]     Абстрактный тип данных #6
Спасибо большое)
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
08.04.2013, 11:53     Абстрактный тип данных #7
Может, имелось в виду что-то такое:
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#include <iostream>
#include <string>
class Human
{
protected:
    struct Data
    {
        std::string name_;
        size_t age_;
    }data;
public:
    virtual void defaultData(std::string name, size_t age) = 0
    {
        this->data.name_ = name; 
        this->data.age_= age;
    }
    virtual void showData()
    {
        std::cout << this->data.name_<< " " << this->data.age_<<std::endl;
    }
        virtual ~Human() {}
};
 
class Man: public Human
{
public: 
    virtual void defaultData(std::string name, size_t age)
    {
        this->data.name_ = name; 
        this->data.age_= age;
    }
    virtual void showData()
    {
        std::cout << this->data.name_<< " " << this->data.age_<<std::endl;
    }
};
 
class Women: public Human
{
public: 
    virtual void defaultData(std::string name, size_t age)
    {
        this->data.name_ = name; 
        this->data.age_= age;
    }
    virtual void showData()
    {
        std::cout << this->data.name_<< " " << this->data.age_<<std::endl;
    }
};
int main()
{
    Human *ptr[2];
    ptr[0] =  new Man;
    ptr[1] =  new Women;
    ptr[0]->defaultData("HisName", 30);
    ptr[1]->defaultData("HerName", 27);
    ptr[0]->showData();
    ptr[1]->showData(); 
    delete[] *ptr;
    system("pause");
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.04.2013, 18:01     Абстрактный тип данных
Еще ссылки по теме:

C++ Абстрактный тип данных
C++ Абстрактный тип данных
Абстрактный тип данных C++

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

Или воспользуйтесь поиском по форуму:
IrinaCk
 Аватар для IrinaCk
0 / 0 / 0
Регистрация: 13.03.2013
Сообщений: 27
08.04.2013, 18:01  [ТС]     Абстрактный тип данных #8
И вам большое спасибо)
Yandex
Объявления
08.04.2013, 18:01     Абстрактный тип данных
Ответ Создать тему
Опции темы

Текущее время: 09:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru