Dumlupınar Üniversitesi Bilgisayar Mühendisliği 2015-2016 Bahar Yarıyılı Nesneye Dayalı Programlama Final soru çözümleri aşağıda yer almaktadır . Bütünleme sınavı için umarım ışık tutar .
Soru 1 : Çok biçimlilik
int main(){
Sekil *sekilOrnek;
Dikdortgen diktdgn(10, 7);
Ucgen ucgn(10, 5);
sekilOrnek = &diktdgn;
sekilOrnek->alan();
sekilOrnek = &ucgn;
sekilOrnek->alan();
return 0;
}
Source.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #include <iostream> #include "Sekil.h" #include "Ucgen.h" #include "Dikdortgen.h" using namespace std; int main(){ Sekil *sekilOrnek; Dikdortgen diktdgn(10, 7); Ucgen ucgn(10, 5); sekilOrnek = &diktdgn; cout << "Dikdortgen alan "<< sekilOrnek->alan()<< " dir\n"; sekilOrnek = &ucgn; cout << "\nUcgenin alani" << sekilOrnek->alan() << " dir \n"; system("pause"); return 0; } |
Sekil.h (Base Class)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #pragma once class Sekil { private : double x, y; public: Sekil(); Sekil(double, double); ~Sekil(); virtual double alan(); double getX(); double getY(); }; |
Sekil.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | #include "Sekil.h" Sekil::Sekil() { } Sekil::Sekil(double a,double b) { x = a; y = b; } double Sekil::getX(){ return x; } double Sekil::getY(){ return y; } double Sekil::alan(){ return 0; } Sekil::~Sekil() { } |
Dikdortgen.h
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #pragma once #include "Sekil.h" class Dikdortgen : public Sekil { private: double x, y; public: Dikdortgen(); Dikdortgen(double,double); double getX(); double getY(); double alan(); ~Dikdortgen(); }; |
Dikdortgen.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | #include "Dikdortgen.h" Dikdortgen::Dikdortgen() { } Dikdortgen::Dikdortgen(double a,double b) { x = a; y = b; } double Dikdortgen::getX(){ return x; } double Dikdortgen::getY(){ return y; } double Dikdortgen::alan(){ return getX()*getY(); } Dikdortgen::~Dikdortgen() { } |
Ucgen.h
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #pragma once #include "Sekil.h" class Ucgen : public Sekil { private: double x, y; public: Ucgen(); Ucgen(double, double); double getX(); double getY(); double alan(); ~Ucgen(); }; |
Ucgen.cpp
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 | #include "Ucgen.h" Ucgen::Ucgen() { } Ucgen::Ucgen(double a,double b) { x = a; y = b; } double Ucgen::getX(){ return x; } double Ucgen::getY(){ return y; } double Ucgen::alan(){ return (getX()*getY()) / 2; } Ucgen::~Ucgen() { } |
Soru -2 : Operator Yukleme
int main(){
A a,b,c;
a.x = 5;
a.y = 10;
b.x = 4;
b.y = 15;
c = a + b;
cout << c;
cout << a + b ;}
Source.cpp
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 | #include <iostream> using namespace std; class A{ public : int x, y; friend A operator+(A &n, A &m){ A sum; sum.x = n.x + m.x; sum.y = n.y + m.y; return sum; } }; ostream & operator<<(ostream &os,A &n){ os << "Toplam degerler : " << "( x= " << n.x << " y = " << n.y << " )"; return os; // cout << c<<"\n"; burada direkt nesne çıktısı vermek için } int main(){ A a,b,c; a.x = 5; a.y = 10; b.x = 4; b.y = 15; c = a + b; cout << c<<"\n"; cout << a + b<<"\n"; system("pause"); return 0; } |
Soru 3 : Şablonlar
int main(){
Ucgen<int> yeniYcg(10,7,8);
cout << yeniYcg.enBuyukKenar();return 0;
}
Source.cpp
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 | #include<iostream> using namespace std; template <class T> class Ucgen{ T x, y, z; public : Ucgen(T _x, T _y, T _z) : x(_x), y(_y), z(_z){} T enBuyukKenar(); }; template <class T> T Ucgen<T>::enBuyukKenar(){ T buyuk; if (x > y) buyuk = x; else buyuk = y; //// if (buyuk > z) return buyuk; else buyuk = z; return buyuk; } int main(){ Ucgen<int> yeniYcg(10,7,8); cout << yeniYcg.enBuyukKenar(); system("pause"); return 0; } |