curs 2 c+
TRANSCRIPT
-
7/28/2019 curs 2 C+
1/8
Cursul 2
O trecere in revista a POO (continuare I)
OUtilizare de clase: string.h, string.cpp
OIerarhii de obiecte (relatia "a-kind-of")
OExemplul Meniu: .h, .cpp, demo
OComunicarea intre obiecte
OExemplul contor - meniu: .h, .cpp. demo
#include "contor-m.h"#include
// Functiile membre ale clasei Meniu_Contor
void Meniu_Contor::completeaza_opt(){this->ad_optiune("Incrementare");
this->ad_optiune("Decrementare");this->ad_optiune("Resetare");this->ad_terminator("Terminare");this->ad_prompter(">>>");
}
void Meniu_Contor::executa_selectie(){switch (selectie)
{case 1:contor->increment();break;
case 2:contor->decrement();break;
case 3:contor->reset();break;
};}
// Functiile membre ale aclasei Display_Box_Contor
void Display_Box_Contor::afiseaza_val(){
this->afiseaza_eticheta();cout get_val() = '0') && (c
-
7/28/2019 curs 2 C+
2/8
// Functiile membre ale clasei Menu
void Meniu::ad_optiune(String optiune_noua){// Add new_item to the menu.optiune[dim_meniu] = String(dim_meniu + 1) + String(". ") + optiune_noua;dim_meniu++;
}
void Meniu::ad_terminator (String et_terminare){this->ad_optiune(et_terminare);
}
void Meniu::ad_prompter(String prompter_nou){prompter = prompter_nou;
}
void Meniu::afiseaza_meniu (){cout
-
7/28/2019 curs 2 C+
3/8
-
7/28/2019 curs 2 C+
4/8
#endif
#include "meniu.h"#include "contor.h"
class Meniu_Contor : public Meniu {public:// Constructori/destructoriMeniu_Contor() { }~Meniu_Contor() { }// AtributeContor& get_contor() { return *contor; }// Metodevoid executa_selectie() ;void completeaza_opt();void set_contor(Contor& new_contor) { contor = &new_contor; }
private:// Date-membruContor* contor;
};
class Display_Box_Contor : public Display_Box {public:// Constructori/destructoriDisplay_Box_Contor() { }~Display_Box_Contor() { }// Atributevoid afiseaza_val();
Contor& get_contor() { return *contor; }// Metodevoid set_contor(Contor& contor_nou) { contor = &contor_nou; }
private:// Data membruContor* contor;
};
#ifndef STRING_H#include "string.h"#endif
-
7/28/2019 curs 2 C+
5/8
-
7/28/2019 curs 2 C+
6/8
};
void Meniu_Test::completeaza_opt(){this->ad_optiune("Optiune 1");this->ad_optiune("Optiune 2");this->ad_optiune("Optiune 3");this->ad_terminator("Terminare.");this->ad_prompter(">>>");
};
void main(void) {Meniu_Test meniu;meniu.completeaza_opt();cout
-
7/28/2019 curs 2 C+
7/8
{String *pstring;pstring = new String(this->character_array);return *pstring;
}
String& String::operator+ (const String& a_string){String *presult;char *pchar;pchar = new char[this->size() + a_string.size() + 1];pchar[0] = '\0';strcpy(pchar, (char*) *this);strcat(pchar, (char*) a_string);presult = new String(pchar);return (*presult);
}
String& String::operator+= (const String& a_string){char *pchar;string_length += a_string.size();pchar = new char[string_length + 1];strcpy(pchar,character_array);
strcat(pchar, a_string.character_array);delete character_array;character_array = pchar;return (*this);
}
String& String::operator= (const String& a_string){
if ((*this) != a_string ){if ( string_length != a_string.size() )
{delete character_array;
string_length = a_string.size();character_array = new char[string_length + 1];}
strcpy(character_array, (char*) a_string );}
return (*this);}
bool String::operator< (const String& a_string){if (strcmp(character_array, a_string.character_array) < 0)
return true;else
return false;}
bool String::operator> (const String& a_string){if (strcmp(character_array, a_string.character_array) > 0)
return true;else
return false;}
-
7/28/2019 curs 2 C+
8/8
bool String::operator== (const String& a_string){if (strcmp(character_array, a_string.character_array) == 0)
return true;else
return false;}
ostream& operator