Nesneye Dayalı Programlama ( Final 2016 ) Soru Çözümleri

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;
}

 

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir