Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.09.2009, 20:25   #1
Many man
Пользователь
 
Регистрация: 25.11.2008
Сообщений: 83
По умолчанию Задание в Visual Studio 2008

Написать графическое приложение, демонстрирующее, на примере тестового набора классов, свойство полиморфизма.


Пример полимофизма в консольном приложении:
Код:
#include <iostream>

using namespace std;

// Абстрактный базовый класс, определяющий некоторый интерфейс.
class base
{
public:
virtual const char* func() = 0;
};

// Дочерний класс, реализующий интерфейс базового.
class parent1: public base
{
public:
const char* func() { return "parent1"; }
};

// Второй дочерний класс, реализующий интерфейс базового.
class parent2: public base
{
public:
const char* func() { return "parent2"; }
};

// Функция демонстрирующая полиморфное поведение,
// относительно интерфейса базового класса по типу
// передаваемого объекта
void Print(base& obj)
{
cout << obj.func() << endl;
}

int main(int argc, char *argv[])
{
// Определение объектов дочерних классов.
parent1 obj1;
parent2 obj2;

cout << "Demo" << endl;

// Вызов функции с параметрами различных типов, дочерних от базового.
Print(obj2);
Print(obj1);

return 0;
}
Подскажите с чего нужно начать?

Последний раз редактировалось Rembo; 04.10.2009 в 12:59.
Many man вне форума Ответить с цитированием
Старый 03.10.2009, 13:37   #2
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

а где задание? какие вопросы?
counter вне форума Ответить с цитированием
Старый 04.10.2009, 08:59   #3
Many man
Пользователь
 
Регистрация: 25.11.2008
Сообщений: 83
По умолчанию

Нужно кусок кода написанный в консольном приложении, написать в графическое приложение в Visual Studio, пожалуйста помогите, я понятия не имею как это делать.
Many man вне форума Ответить с цитированием
Старый 04.10.2009, 10:33   #4
Скарам
Дружите с Linq ;)
Форумчанин
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Сообщений: 823
По умолчанию

Графическое приложение,в смысле рисовать эллипсы и кружочки,или просто продемонстрировать в оконном приложении?..
Не давай организму поблажки, каждый день тренируй его в шашки..
Скарам вне форума Ответить с цитированием
Старый 04.10.2009, 12:10   #5
Many man
Пользователь
 
Регистрация: 25.11.2008
Сообщений: 83
По умолчанию

Да нужно продемонстрировать в оконном приложении.

А может кто нибудь выложить какой нибудь пример графического приложения на С++, демонстрирующий полиморфизм?
Пожалуйста.

Последний раз редактировалось Stilet; 05.10.2009 в 10:41.
Many man вне форума Ответить с цитированием
Старый 05.10.2009, 10:40   #6
Скарам
Дружите с Linq ;)
Форумчанин
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Сообщений: 823
По умолчанию

Many man,вот отсканил учебник,может тебе поможет
1 скан
2 скан
3 скан
4 скан
Думаю там всё прозрачно...теперь прикладывай как-нибудь к тому,что надо сделать))
Не давай организму поблажки, каждый день тренируй его в шашки..
Скарам вне форума Ответить с цитированием
Старый 10.10.2009, 21:29   #7
Many man
Пользователь
 
Регистрация: 25.11.2008
Сообщений: 83
По умолчанию

Создал я графическое приложение, но выдает ошибку, помогите пожалуйста исправить .
Надо чтобы кнопка1 это родитель, кнопка2 и кнопка3 это потомки.
И на label нужно чтобы выводилось на эти кнопки что нибудь, неважно что.
Вот заголовочный файл class.h
Код:
class base
{
public:
	virtual void Print(System::Windows::Forms::Label ^Label1);
	
};
void base::Print(System::Windows::Forms::Label ^Label1)
{label1->Location=L"parent";}

// Дочерний класс, реализующий интерфейс базового.
class parent1: public base
{
public:
	void Print(System::Windows::Forms::Label ^Label1);
	
};
void parent1::Print(System::Windows::Forms::Label ^Label1)
{label1->Location=L"1";}

// Второй дочерний класс, реализующий интерфейс базового.
class parent2: public base
{
public:
	void Print(System::Windows::Forms::Label ^Label1);

};
void parent2::Print(System::Windows::Forms::Label ^Label1)
{label1->Location=L"2";}
void ShowLabel(base* pp, System::Windows::Forms::Label ^Label1)
{
	pp->Print(Label1);
}
Many man вне форума Ответить с цитированием
Старый 10.10.2009, 21:30   #8
Many man
Пользователь
 
Регистрация: 25.11.2008
Сообщений: 83
По умолчанию

Это Form1.h
Код:
#pragma once

#include "class.h"
namespace numb1 {

	using namespace System;
	using namespace System::ComponentModel;
	using namespace System::Collections;
	using namespace System::Windows::Forms;
	using namespace System::Data;
	using namespace System::Drawing;

	/// <summary>
	/// Сводка для Form1
	///
	/// Внимание! При изменении имени этого класса необходимо также изменить
	///          свойство имени файла ресурсов ("Resource File Name") для средства компиляции управляемого ресурса,
	///          связанного со всеми файлами с расширением .resx, от которых зависит данный класс. В противном случае,
	///          конструкторы не смогут правильно работать с локализованными
	///          ресурсами, сопоставленными данной форме.
	/// </summary>
	public ref class Form1 : public System::Windows::Forms::Form
	{
	public:
		Form1(void)
		{
			InitializeComponent();
			//
			//TODO: добавьте код конструктора
			//
		}

	protected:
		/// <summary>
		/// Освободить все используемые ресурсы.
		/// </summary>
		~Form1()
		{
			if (components)
			{
				delete components;
			}
		}
	private: System::Windows::Forms::Button^  button1;
	protected: 
	private: System::Windows::Forms::Button^  button2;
	private: System::Windows::Forms::Button^  button3;
	private: System::Windows::Forms::Label^  label1;

	private:
		/// <summary>
		/// Требуется переменная конструктора.
		/// </summary>
		System::ComponentModel::Container ^components;

#pragma region Windows Form Designer generated code
		/// <summary>
		/// Обязательный метод для поддержки конструктора - не изменяйте
		/// содержимое данного метода при помощи редактора кода.
		/// </summary>
		void InitializeComponent(void)
		{
			this->button1 = (gcnew System::Windows::Forms::Button());
			this->button2 = (gcnew System::Windows::Forms::Button());
			this->button3 = (gcnew System::Windows::Forms::Button());
			this->label1 = (gcnew System::Windows::Forms::Label());
			this->SuspendLayout();
			// 
			// button1
			// 
			this->button1->Location = System::Drawing::Point(12, 223);
			this->button1->Name = L"button1";
			this->button1->Size = System::Drawing::Size(75, 23);
			this->button1->TabIndex = 0;
			this->button1->Text = L"button1";
			this->button1->UseVisualStyleBackColor = true;
			this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
			// 
			// button2
			// 
			this->button2->Location = System::Drawing::Point(141, 214);
			this->button2->Name = L"button2";
			this->button2->Size = System::Drawing::Size(75, 23);
			this->button2->TabIndex = 1;
			this->button2->Text = L"button2";
			this->button2->UseVisualStyleBackColor = true;
			this->button2->Click += gcnew System::EventHandler(this, &Form1::button2_Click);
			// 
			// button3
			// 
			this->button3->Location = System::Drawing::Point(222, 214);
			this->button3->Name = L"button3";
			this->button3->Size = System::Drawing::Size(75, 23);
			this->button3->TabIndex = 2;
			this->button3->Text = L"button3";
			this->button3->UseVisualStyleBackColor = true;
			this->button3->Click += gcnew System::EventHandler(this, &Form1::button3_Click);
			// 
			// label1
			// 
			this->label1->AutoSize = true;
			this->label1->Location = System::Drawing::Point(52, 56);
			this->label1->Name = L"label1";
			this->label1->Size = System::Drawing::Size(35, 13);
			this->label1->TabIndex = 3;
			this->label1->Text = L"label1";
			this->label1->Click += gcnew System::EventHandler(this, &Form1::label1_Click);
			// 
			// Form1
			// 
			this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
			this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
			this->ClientSize = System::Drawing::Size(292, 266);
			this->Controls->Add(this->label1);
			this->Controls->Add(this->button3);
			this->Controls->Add(this->button2);
			this->Controls->Add(this->button1);
			this->Name = L"Form1";
			this->Text = L"Form1";
			this->ResumeLayout(false);
			this->PerformLayout();

		}
#pragma endregion
	private: System::Void label1_Click(System::Object^  sender, System::EventArgs^  e) {
				
			 }
	private: System::Void base_Click(System::Object^  sender, System::EventArgs^  e) {
                 base tex;
				 ShowLabel(&tex,Label1);
			 }
private: System::Void Parent2_Click(System::Object^  sender, System::EventArgs^  e) {
			 parent2 tex;
				 ShowLabel(&tex,Label1);
		 }
private: System::Void Parent1_Click(System::Object^  sender, System::EventArgs^  e) {
			 parent1 tex;
				 ShowLabel(&tex,Label1);
		 }
};
}
Many man вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с графикой в Visual Studio C++ 2008 Azgard Visual C++ 12 22.09.2010 17:19
Visual Studio 2008 bullvinkle Помощь студентам 4 10.11.2008 23:44
Помогите с Visual Studio 2008(работа с формами) Bruster Помощь студентам 1 03.11.2008 21:42
Владельцы Visual Studio 2008, помогите пжлст igroman Софт 4 03.08.2008 17:47