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
#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)
#pragma once
class Sekil
{
private :
double x, y;
public:
Sekil();
Sekil(double, double);
~Sekil();
virtual double alan();
double getX();
double getY();
};
Sekil.cpp
#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
#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
#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
#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
#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
#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
#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;
}

