Programowanie Obiektowe
Jakub Juszkiewicz
Mechatronika; rok III; sem V
Prowadzący: dr inż. Wojciech Pietrowski
//główna klasa
class TInstr
{
public:
char Name [20];
int LSB;
int LSS;
bool SetName(char*NewName); //Użycie setera
char* GetName(); //Użycie getera
bool SetLSB(int NewLSB);
int GetLSB();
bool SetLSS(int NewLSS);
int GetLSS();
//konstruktor
TInstr(); // definicja konstruktra
~TInstr(); // definicja destruktora
};
// koniec głównej klasy to dać do pliku .h
__________________________________________________________________________________
#include <iostream>
#include <string.h>
#include <fstream>
#include "guitar.h"
using namespace std;
// klasa pochodna Mandolina
// test zrobienia dodatkowej klasy
//______________________________________________________________//
class TMandolin // klasa pochodna
: public TInstr // typ dziedziczenia, klasa bazowa
{
int LSB; // pobranie z głównej klasy ilości strun basowych ?
int LSS; // pobranie z głównej klasy ilości strun sopranowych ?
//przykład odczytu z klasy głównej i pochodnej
public:
void TMadolin();
{
LSB = 1; // LSB z Pochodnej (TMandolin)
Baza::LSB = 2; //LSB z Bazowej (TInstr)
}
};
//______________________________________________________________//
// klasa pochodna Gitara
class TGuitar // klasa pochodna
: public TInstr // typ dziedziczenia, klasa bazowa
{
public:
TGuitar();
void graj();
{
for (int i = 0; i < 10; ++i)
std::cout << "Gram, gram\n";
}
};
// klasa pochodna po gitarze-> elektryczna
class TGuitarEl // klasa pochodna
: public TGuitar // typ dziedziczenia, klasa bazowa
{
public:
TGuitarEl();
void przester();
{
for (int i = 0; i < 5; ++i)
std::cout << "Brzdek, bzzrr\n";
}
};
// klasa pochodna po gitarze-> klasyczna
class TGuitarKl // klasa pochodna
: public TGuitar // typ dziedziczenia, klasa bazowa
{
public:
TGuitarKl();
void rezonuj();
{
std::cout << "pudlo dziala\n";
}
};
};
// koniec klas
TInstr::TInstr()
{
//Tu powinienem zainicjujować wartości zmiennych klasy
}
TInstr::~TInstr()
{
//wszystkie operacje jakie mają się wykonać przed zwolnieniem pamięci zajmowanej przez klasę.
}
bool TInstr::SetName(char*NewName) // kopiowanie łańcucha znaków do tablicy znaków
{
strcpy(Name,NewName); //(przeznaczenie, źrodło)
return true;
}
bool TInstr::SetLSB(int NoweLSB)
{
if (NoweLSB >=0 ) //NoweLSB większe lub równe 0
{LSB= NoweLSB;
return true;
}
else return false;
}
bool TInstr::SetLSS(int NoweLSS)
{
if (NoweLSS >=0 ) //NoweLSS większe lub równe 0
{LSS= NoweLSS;
return true;
}
else return false;
}
char* TInstr::GetName() // Pobierz nazwę
{
return Name;
}
int TInstr::GetLSB() // Pobierz liczbę LSB
{
return LSB;
}
int TGuitar::GetLSS() // Pobierz liczbę LSS
{
return LSS;
}
//______________Zapis do pliku__________________________//
void TGuitar::SaveToFile (char*FileName) //
{
std::fstream Plik;
Plik.open(FileName,ios::out); //Otwórz plik
Plik<<"obiekt klasy..."; //umieść w pliku
Plik.close(); //Zamknij plik
}
//______________Zapis do pliku__________________________//
int main()
{
TGuitar G1;
//G1.SaveToFile;
TGuitar G2;
TGuitar G3;
G1.SetName("Jagna");
G2.SetName("Danusia");
cout << G1.GetName();
cout << ""<<endl;
cout << G2.GetName();
cout << ""<<endl;
cout << "Moja gitara Jagna jest lepsza od Twojej Danusi, bo nie umiera :)";
//__________________Użycie private- nie używane______________________//
// strcpy(G3.Name, "Zbyszko"); ->dostęp jest niemożliwy, bo znajduje się w sekcji private
// cout << G3.Name; ->dostęp jest niemożliwy, bo znajduje się w sekcji private
//__________________Użycie private- nie używane______________________//
TGuitar G4;
G4.SetLSB (2);
cout <<'\n'<<"LSB: "<<'\n'<< G4.GetLSB()<<endl;
TGuitar G5;
G5.SetLSS (3);
cout <<"LSS: "<<'\n'<< G5.GetLSS()<<endl;
TGuitar * G6;
G6 = new TGuitar;
G6->SetName("blabla");a
cout<<G6->GetName();
//_________Zapis do pliku wartości G6__________//
G6->SaveToFile("G6.txt");
TGuitar G6;
G6.SetName("blabla");
cout << G6.GetName();
cout << ""<<endl;
G6.SaveToFile("G5.txt");
//_________Zapis do pliku wartości G6__________//
TStruna * S1;
return 0;
}