Object-Oriented Programming Laboratuvar 11

Benzer belgeler
Ad Soyad: İmza: Object-Oriented Programming Quiz 4 60dk. Kapalı kitap. Kapalı defter. Kapalı cep telefonu. Hesap makinesi yok.

#ifndef COMPLEX_H #define COMPLEX_H

Object-Oriented Programming Lab 4. - Sıcaklık değeri, Kelvin biriminde saklansın. Varsayılan sıcaklık değeri K olsun.

Fall Object-Oriented Programming Laboratory 02 - Structures

Object-Oriented Programming Lab Shape, TwoDShape, ThreeDShape, Disk, Square, Sphere, Cube class hiyerarşisi.

#ifndef VEKTOR_H #define VEKTOR_H. struct vektor_s { double x; double y; double z; }; typedef struct vektor_s vektor_t;

Fall Object-Oriented Programming Laboratory 03

#ifndef FATURA_H #define FATURA_H

Object-Oriented Programming Laboratuvar 10

Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü

Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü

const objects & const member functions

String ve Karakter Dizileri. Yrd. Doç. Dr. Fehim KÖYLÜ Erciyes Üniversitesi Bilgisayar Mühendisliği Bölümü

const objects & const member functions const objects ve const functions Data Member Initializer List Data Member Initializer List

Inheritance. Inheritance (turetim)

C++ Class larina baslangic. C++ Versus C Object-oriented Language C++ Structure dan Object Create etmek. Structure tanimlama.

1 PROGRAMLAMAYA GİRİŞ

C++ Giriş Ders 1 MSGSU Fizik Bölümü Ferhat ÖZOK Kullanılacak kaynak: Published by Juan Soulié

C++ Dersi: Nesne Tabanlı Programlama

C++ ile Nesneye Dayalı Programlama

KONU 7: DOSYA İŞLEME ( File Processing )

Nesne İşaretçileri. Binnur Kurt Bilgisayar Mühendisliği Bölümü İstanbul Teknik Üniversitesi. Sınıf Yapısı. Kalıtım Çok Şekillilik

C++ Dersi: Nesne Tabanlı Programlama

C++ Dersi: Nesne Tabanlı Programlama

C++ Statements. { ve } arasında ifade edilen bir dizi statement bir compound statement (birleşik ifade) oluşturur.

BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ Published by Juan Soulié

10/17/2007 Nesneye Yonelik Programlama 3.1

TEMPLATES. Binnur Kurt Bilgisayar Mühendisliği Bölümü İstanbul Teknik Üniversitesi. C++ ile Nesneye Dayalı Programlama 1

Sınıf üyeleri: değişkenler (fields) and metotlar (methods) Değişkenler: nesne içerisindeki değişkenlerdir Temel veri tipi veya sınıf tipi

Kalıtım (Inheritance)

Pros and Cons of Pointers. Pointers. Avantajlar. Dezavantajlar

Operatörlere İşlev Yükleme

BİLG Dr. Mustafa T. Babagil 1

Binnur Kurt Bilgisayar Mühendisliği Bölümü İstanbul Teknik Üniversitesi. C++ ile Nesneye Dayalı Programlama 1

Veri Yapıları Lab Notları 1

C++ Giriş Ders 5 MSGSU Fizik Bölümü Ferhat ÖZOK

NESNEYE DAYALI PROGRAMLAMA 9. HAFTA UYGULAMA DERSİ

işlemler bittikten sonra dosyaların kapatılması uygun olacaktır. Bunun için, fclose(fin);

NESNEYE YÖNELİK PROGRAMLAMA

En kucuk calisabilir birime satetement denir Statements semicolon (;) ile sonlanir Yalniz basina ; null statement i ifade eder

NESNEYE YÖNELİK PROGRAMLAMA C++ a Giriş

13.3 Relationships Among Objects in an Inheritance Hierarchy

NESNEYE YÖNELİK PROGRAMLAMA

BMÜ-112 ALGORİTMA VE PROGRAMLAMA-II LABORATUARI DENEY-2 FÖYÜ

YZM 2105 Nesneye Yönelik Programlama

KALITIM. Binnur Kurt Bilgisayar Mühendisliği Bölümü İstanbul Teknik Üniversitesi. Sınıf Yapısı. Kalıtım Çok Şekillilik

Java da, tüm değişkenlerin kullanılmadan önce tanımlanması edilmesi gerekir. Bir değişken tanımlamanın temel gösterimi bu şekildedir:

Karma C/C + + Kodlama

C++ Dersi: Nesne Tabanlı Programlama

DERSİN WEB SİTESİ:

Hiyerarşik Yazılım Tasarımı Kavramı

Bölüm 10 Polimorfizm

/*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/

Örnek1: #include <iostream> #include <string> using namespace std;

NESNEYE YÖNELİK PROGRAMLAMA

YZM 2105 Nesneye Yönelik Programlama

BMT 101 Algoritma ve Programlama I 5. Hafta. Yük. Müh. Köksal Gündoğdu 1

Veri Yapıları ve Algoritmalar dönem

public static int Toplam int x, int y

C++ Operatörler (Operators)

#include <stdio.h> int main(void) { FILE * dosya; dosya = fopen("soru1.txt", "w"); fprintf(dosya, "Merhaba Dunya!"); fclose(dosya); return 0; }

BBS 514 YAPISAL PROGRAMLAMA (STRUCTURED PROGRAMMING)

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.

NESNE TABANLI PROGRAMLAMA-1 DERS UYGULAMALARI (22 EYLÜL - 14 KASIM

Maltepe Üniversitesi Bilgisayar Mühendisliği Bölümü BİL 203 Veri Yapıları ve Algoritmalar I

Diziler & Karakter Katarı (String)

Ders 8 Konu Özeti ve Problemler

Object-Oriented Oriented Design (OOD) Procedure Based Programlama. OOD Ana Ozellikleri

Programlamaya Giriş Karar Yapıları, Tekrarlı İfadeler(Döngüler)

Dizi nin Önemi. Telefon rehberindeki numaralar, haftanın günleri gibi v.b.

Yordamsal Tabanlı Programlama

Diziler. Yrd.Doç.Dr.Bülent ÇOBANOĞLU

CBÜ Teknoloji Fakültesi, Yazılım Mühendisliği. Nesneye Yönelik Programlama

scanf () Fonksiyonu Klavyeden veri okumak için kullanılır. Yapı olarak printf () fonksiyonu aynıdır. Kullanım biçimi:

C++0x - Sağ Taraf Değerine Bağlanan Referanslar (Rvalue References)

C++ Dersi: Nesne Tabanlı Programlama

KOCAELİ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ

C Programlama printf() Fonksiyonu

2. Iterasyon. Bu bölümde ele alınan problemler:

BBS 514 YAPISAL PROGRAMLAMA (STRUCTURED PROGRAMMING)

Çok Şekillilik (Polymorphism)

C++ Dersi: Nesne Tabanlı Programlama

Karakter katarları ile ilgili fonksiyonlar içerir Yerel kayan noktalı sayılar tanımlanır

BTEP243 Ders 3. class Yazım Kuralı:

SAKARYA ÜNİVERSİTESİ BİLGİSAYAR VE BİLİŞİM BİLİMLERİ FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ GÜZ DÖNEMİ PROGRAMLAMAYA GİRİŞ DERSİ

The statement. const Time noon( 12, 0, 0 );

NESNE TABANLI PROGRAMLAMA

NESNEYE YÖNELİK PROGRAMLAMA THIS İŞARETÇİSİ, KOPYA YAPICI FONKSİYON, STATİK ELEMANLAR, ARKADAŞ SINIF VE FONKSİYONLAR,NESNE DİZİLERİ

abstract Sınıflar 1 Sınıf sınıf1 new class Ama aşağıdaki şekilde referans alınabilir;

AHMET YESEVİ ÜNİVERSİTESİ BİLİŞİM SİSTEMLERİ VE MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ LİSANS DÖNEM ÖDEVİ

Java C.Thomas Wu 2004b kitabından Türkçeleştirilerek ve örneklendirilerek hazırlanmıştır.

Statik veri üyeleri sınıf dosyası içerisinde, ancak sınıf bildirimi dışında başlatılmalıdır. Statik üye fonksiyonları

BÖLÜM- 11: BÜYÜK VERİ KÜMELERİ

Week 7. Düğüm bulma Tekli bağlı liste: phead ve ptail Dairesel bağlı liste Çift bağlı liste

C#.NET ile PROGRAMLAMAYA GİRİŞ

Transkript:

Object-Oriented Programming Laboratuvar 11 19.12.2017 We use abstract class Employee to represent the general concept of an employee. The classes that derive directly from Employee are SalariedEmployee and CommissionEmployee. BasePlusCommissionEmployee is derived from CommissionEmployee and represents the last employee type. Write definitions of the four classes and the overridden methods (earnings and print) according to the table. earnings print Employee = 0 firstname lastname social security number: SSN SalariedEmployee weeklysalary salaried employee: firstname lastname social security number: SSN weekly salary: weeklysalary CommissionEmployee commissionrate* commission employee: firstname lastname grosssales social security number: SSN gross sales: grosssales commission rate: commissionrate BasePlusCommissionEmployee (commissionrate* base-salaried commission employee: firstname lastname grosssales)+ social security number: SSN basesalary gross sales: grosssales commissiton rate: commissionrate base salary: basesalary 1. çokbiçimli Employee (Calisan) sınıfları Bir çalışanın genel temsilini yapmak için soyut (abstract) Employee sınıfını kullanılsın. Employee sınıfından SalariedEmployee (MaasliCalisan) ve CommissionEmployee (KomisyonluCalisan) sınıfları türetilsin. BasePlusCommissionEmployee (MaasliKomisyonlıCalisan), CommissionEmployee sınıfından türetilen diğer bir çalışan sınıfı olsun. Bu 4 sınıfı ve override edilmiş (earnings (kazanç) ve print) metotlarını tabloya göre tanımlayın. Örnek program: 3 farklı class tan birer çalışan tanımlayın. 8 hafta sonra, her bir çalışana ödenen toplam ücreti ve çalışanlara ödenen toplam ücreti hesaplayın ve ekranda gösterin. Komisyonlu çalışanların o haftaki satış miktarını kullanıcıdan girmesini isteyebilirsiniz.

#ifndef EMPLOYEE_H #define EMPLOYEE_H #define NAME_LEN 32 #define SSN_LEN 10 class Employee public: Employee(void); virtual double earnings(void) = 0; virtual void print(void) const; protected: char firstname[name_len+1]; // +1 is for NULL character. char lastname[name_len+1]; // +1 is for NULL character. char SSN[SSN_LEN+1]; // +1 is for NULL character. ; #endif // EMPLOYEE_H #include "Employee.h" #include <iostream> #include <cstring> using std::cin; Employee::Employee(void) char buffer[128]; cout << "enter first name: "; cin >> buffer; strncpy(firstname, buffer, NAME_LEN); firstname[name_len] = '\0'; cout << "enter last name: "; cin >> buffer;

strncpy(lastname, buffer, NAME_LEN); lastname[name_len] = '\0'; cout << "enter social security number: "; cin >> buffer; strncpy(ssn, buffer, SSN_LEN); SSN[SSN_LEN] = '\0'; void Employee::print(void) const cout << "employee: " << firstname << " " << lastname << endl << "social security number: " << SSN << endl << endl; return; #ifndef SALARIEDEMPLOYEE_H #define SALARIEDEMPLOYEE_H #include "Employee.h" class SalariedEmployee : public Employee public: SalariedEmployee(void); double earnings(void); /* SalariedEmployee'den turetecegimiz baska bir class yok. * o sebeple virtual olmasina gerek yok. void print(void) const; /* SalariedEmployee'den turetecegimiz baska bir class yok. * o sebeple virtual olmasina gerek yok. protected: double weeklysalary; ; #endif // SALARIEDEMPLOYEE_H #include "SalariedEmployee.h"

#include <iostream> using std::cin; SalariedEmployee::SalariedEmployee(void) : Employee() cout << "enter weekly salary: "; cin >> weeklysalary; double SalariedEmployee::earnings(void) return weeklysalary; void SalariedEmployee::print(void) const cout << "salaried employee: " << firstname << " " << lastname << endl << "social security number: " << SSN << endl << "weekly salary: " << weeklysalary << endl; return; #ifndef COMMISSIONEMPLOYEE_H #define COMMISSIONEMPLOYEE_H #include "Employee.h" class CommissionEmployee : public Employee public: CommissionEmployee(void); virtual double earnings(void); /* CommissionEmployee'den BasePlusCommissionEmployee turetilecek. * o sebeple earnings metodunu, derived class'ta redefine edebilmek icin virtual. virtual void print(void)const; /* CommissionEmployee'den BasePlusCommissionEmployee turetilecek.

; protected: double commissionrate; double grosssales; * o sebeple print metodunu, derived class'ta redefine edebilmek icin virtual. #endif // COMMISSIONEMPLOYEE_H #include "CommissionEmployee.h" #include <iostream> using std::cin; CommissionEmployee::CommissionEmployee(void) : Employee() cout << "enter commission rate: "; cin >> commissionrate; grosssales = 0; double CommissionEmployee::earnings(void) cout << "commission employee: " << firstname << " " << lastname << endl << "enter gross sales: "; cin >> grosssales; return grosssales * commissionrate; void CommissionEmployee::print(void) const cout << "commission employee: " << firstname << " " << lastname << endl << "social security number: " << SSN << endl << "commission rate: " << commissionrate << endl << "gross sales: " << grosssales << endl; return; #ifndef BASEPLUSCOMMISSIONEMPLOYEE_H #define BASEPLUSCOMMISSIONEMPLOYEE_H

#include "CommissionEmployee.h" class BasePlusCommissionEmployee : public CommissionEmployee public: BasePlusCommissionEmployee(void); double earnings(void); /* BasePlusCommissionEmployee'den turetecegimiz baska bir class yok. * o sebeple virtual olmasina gerek yok. void print(void) const; /* BasePlusCommissionEmployee'den turetecegimiz baska bir class yok. * o sebeple virtual olmasina gerek yok. protected: double basesalary; ; #endif // BASEPLUSCOMMISSIONEMPLOYEE_H #include "BasePlusCommissionEmployee.h" #include <iostream> using std::cin; BasePlusCommissionEmployee::BasePlusCommissionEmployee(void) : CommissionEmployee() cout << "enter base salary: "; cin >> basesalary; double BasePlusCommissionEmployee::earnings(void) cout << "base plus commission employee: " << firstname << " " << lastname << endl << "enter gross sales: "; cin >> grosssales; return grosssales * commissionrate + basesalary; void BasePlusCommissionEmployee::print(void) const

cout << "base plus commission employee: " << firstname << " " << lastname << endl << "social security number: " << SSN << endl << "commission rate: " << commissionrate << endl << "gross sales: " << grosssales << endl << "base salaary: " << basesalary << endl; return; #include "Employee.h" #include "SalariedEmployee.h" #include "CommissionEmployee.h" #include "BasePlusCommissionEmployee.h" #include <iostream> int main(void) SalariedEmployee e1; CommissionEmployee e2; BasePlusCommissionEmployee e3; Employee *eptrarr[] = &e1, &e2, &e3; double totalpayments[] = 0, 0, 0 ; int wlpr, elpr; for(wlpr=0; wlpr < 4; wlpr++) cout << "week: " << wlpr+1 << endl; for(elpr=0; elpr < 3; elpr++) totalpayments[elpr] += eptrarr[elpr]->earnings(); for(elpr=0; elpr<3; elpr++)

eptrarr[elpr]->print(); cout << "total payment: " << totalpayments[elpr] << endl << endl; return 0;