Buning namunaviy kodi va sinf diagrammasi
Dastur harorat sensori (konsoldan kiritilgan) ma'lumotlarini oladi - TemperatureMeasure sinfining har ikki ob'ekti uchun 5 ta o'lchov va ularni o'rtacha. Shuningdek, o'lchangan qiymatlarni ko'rsatish uchun ShowMeasure klassi mavjud.
# std nom maydonidan foydalanib ;
class Sensor {
int qiymati; ommaviy :
Sensor () {qiymati = 0;
}
void setValue ( int value) {
this -> value + = value;
}
int getValue(){
qaytish qiymati; }
};
class MeasureCount {
int raqami; statik int jami;
public : MeasureCount () {
soni = 0;
}
void increment () {
number ++; jami ++;
}
int getNumber () { qaytish raqami; }
static int getTotal () { return total; }
};
int MeasureCount :: total = 0;
class ITemperatureMeasure
{
public :
virtual void setValue () = 0;
virtual er-xotin getValue () = 0;
}; TemperatureMeasure
klassi : ommaviy virtual ITemperatureMeasure
{
xususiy :
Sensor * h; // yig'ish
MeasureCount * o'lchov; //
ommaviy kompozitsiya :
TemperatureMeasure (Sensor * h);
int getNumber () { return o'lchov-> getNumber (); }
Ikki GetValue () { Qaytish ( ikki ) h-> GetValue () / measure-> getNumber (); }
void setValue ()
{
int qiymati;
o'lchov-> o'sish ();
cout << "t [" << o'lchov-> getNumber () << "] =" ;
cin >> qiymati;
h-> setValue (qiymat);
}
statik int getTotal () { return MeasureCount :: getTotal (); }
};
TemperatureMeasure :: TemperatureMeasure (Sensor * h)
{
o'lchov = yangi MeasureCount ();
bu -> h = h;
}
Sinf ShowTemperature // bog'liqlik
{
davlat :
statik bo'sh Show (TemperatureMeasure t)
{
cout << t.getNumber () << ":" ;
cout << t.getValue () << "oC" << endl;
}
};
int main ()
{
Sensor * h1 = yangi Sensor ();
TemperatureMeasure tc1 (h1);
uchun ( int i = 0; i <5; i ++)
tc1.setValue ();
ShowTemperature :: Show (tc1);
cout << endl;
Sensor * h2 = yangi Sensor ();
TemperatureMeasure tc2 (h2);
uchun ( int i = 0; i <5; i ++)
tc2.setValue ();
ShowTemperature :: Show (tc2);
cout << endl;
cout << "Total:" << TemperatureMeasure :: getTotal () << endl;
cin.get (); cin.get ();
qaytish 0;
}
Yuqoridagi kod uchun UML sinf diagrammasini ishga tushirish natijasi quyidagicha bo'ladi:
Sinf diagrammasida asosiy sinf TemperatureMeasure klassi bo'lib, u harorat o'lchagichidir. Barcha o'lchovlarning o'rtacha arifmetikasi o'lchangan qiymat sifatida hosil bo'ladi - barcha o'lchovlarning yig'indisi ularning soniga bo'linadi. Sensor
klassi (harorat sensori sifatida) o'lchovlarni qabul qilish va ularni qo'shish uchun ishlatiladi . Konsol topshirig'ida o'lchovlarning o'zi ushbu sinfga yig'indiga o'tkaziladi. Sinf asosiy TemperatureMeasure klassi bilan yig'ilish munosabatlaridan iborat : biz avval Sensor sinfining ob'ektini yaratamizva keyin uni konstruktor parametri sifatida TemperatureMeasure sinfiga sinfning bir qismi sifatida ishlating.
O'lchovlarning soni bilan hosil bo'ladi MeasureCount sinf statik mulk o'z ichiga olgan, jami umumiy o'lchov sanab uchun, shuningdek, bir soni mulkini muayyan uchun metr sonini sanab uchun TemperatureMeasure ob'ekti . Class MeasureCount sinf tarkibiga nisbatan saqlanadi TemperatureMeasure : object MeasureCount to'g'ridan-to'g'ri TemperatureMeasure ob'ektini yaratishda yaratilgan (uning konstruktorida). ITemperatureMeasure
klassi TemperatureMeasure sinfining interfeysi bo'lib , o'ziga xos provayder hisoblanadi.
2. Oqimlar va jarayonlar.
Jarayon - bu boshqa jarayonlar bilan bir vaqtda bajarilishi mumkin bo'lgan og'ir vaznli oqimdir.
Oqim - bu bir xil jarayonda boshqa jarayonlar bilan bir vaqtda bajarilishi mumkin bo'lgan engil oqim.
Faol ob'ekt - bu jarayon yoki ipga egalik qiluvchi va boshqarish faoliyatini boshlashi mumkin bo'lgan ob'ekt.
Faol sinf - bu misollari faol ob'ektlar bo'lgan sinf.
Grafik jihatdan faol sinf qalin chiziqlar bilan to'rtburchaklar shaklida ko'rsatiladi. Jarayonlar va oqimlarlar stereotipli faol sinflar sifatida ko'rsatiladi.
1-rasm: Faol sinf
Do'stlaringiz bilan baham: |