Nesneye Dayalı Programlama Laboratuvarı



Benzer belgeler
Karabük Üniversitesi, Mühendislik Fakültesi... WEB TEKNOLOJİLERİ

1 PROGRAMLAMAYA GİRİŞ

1 C#.NET GELİŞTİRME ORTAMI 1 Visual Studio 2015 Arayüzü 4 Menu Window 6 Solution Explorer 7 Properties Window 8 Server Explorer 8 Toolbox 9

Yeni bir proje açarken File New - Web Site diyoruz. Gelen ekranda Visual Basic veya C# seçilebilir. Biz ders kapsamında C# programlama dilini seçtik.

ALGORİTMA VE PROGRAMLAMA II

NESNEYE YÖNELİK PROGRAMLAMA

HSancak Nesne Tabanlı Programlama I Ders Notları

YZM 2105 Nesneye Yönelik Programlama

Yazılım Nedir? 2. Yazılımın Tarihçesi 3. Yazılım Grupları 4 Sistem Yazılımları 4 Kullanıcı Yazılımları 5. Yazılımın Önemi 6

Response : Sunucunun istemciye veri yollamasını

Android Ders Notları

Örnek 4: Örnek Özyinelemeli fonksiyon örneği Bölüm 9. C++ programlama dilinde Nesne ve sınıf

ASP.NET ile Bir Web Sitesi Oluşturma

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler

DÖNGÜLER (LOOPS) while(), do-while(), for(), foreach()

Görsel Programlama (Visual Programming) 2.Hafta

İNTERNET TABANLI PROGRAMLAMA

5.HAFTA. Sınıf ve Nesne Kavramı, Metot Oluşturma, Kurucu Metot, this Deyimi

BM 102 Bilgisayar Programlama II. Windows Form Application

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

Java 2 Standart Edition SDK Kurulum ve Java ya Giriş

Görsel Programlama 1

ALGORİTMA VE PROGRAMLAMA II

Algoritma ve Programlama: Karar Yapıları ve Döngüler

C++ Dersi: Nesne Tabanlı Programlama

HESAP MAKİNASI YAPIMI

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.

ATATÜRK ÜNİVERSİTESİ BİLGISAYAR MÜHENDİSLİĞİ BÖLÜMÜ BM 104- NESNEYE YÖNELİK PROGRAMLAMA DERSİ BAHAR DÖNEMİ ÖDEV-3

YZM 2105 Nesneye Yönelik Programlama

Visual Studio 2010 veya 2013, Sharp Develop 3.2 programlarını kurabilirsiniz.

Bigisayar Programlama

ANA SINIF TÜRETİLEN BİRİNCİ SINIF TÜRETİLEN İKİNCİ SINIF

BİLGİSAYAR BİLİMİ DERSİ (KUR 1) PYTHON PROGRAMLAMA DİLİ ÇALIŞMA KÂĞIDI - 1

11- FONKSİYONLAR (FUNCTIONS)

C++ Dersi: Nesne Tabanlı Programlama

C++ Dersi: Nesne Tabanlı Programlama

NESNEYE YÖNELİK PROGRAMLAMA

Ders 4: Diziler (Arrays( Arrays) barisgokce.com

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

C# Form Uygulamaları. Nesne Tabanlı Programlama I (C#) Ders Notu. S.Ü.Akören A.R.E. Meslek Yüksekokulu C.ÖZCAN- F.SARAY

Yrd. Doç. Dr. Caner ÖZCAN

BİLG Dr. Mustafa T. Babagil 1

Javascript. 1) Notepad++ aşağıdaki kodları yazıp deneme.html olarak kaydedelim. 2) Biraz önceki sayfa sadece html kodların içeriyordu.

while(), do-while(), for() M.İLKUÇAR 2010 MAKU-MYO

Genel Programlama II

Diziler İndisli Değişkenler

Göstericiler (Pointers)

BİL-142 Bilgisayar Programlama II

ALGORİTMA VE PROGRAMLAMA I

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

Görsel Programlama (Visual Programming) 2.Hafta

DATA STRUCTURES. Lab II Metotlar, Diziler ve Hata Ayıklama. Prof. Dr. Aybars UĞUR

BM102 BİLGİSAYAR PROGRAMLAMA II LABORATUVAR UYGULAMALARI. 3Hafta

NESNEYE YÖNELİK PROGRAMLAMA

Sunum İçeriği. Programlamaya Giriş

Örnek: İki fonksiyondan oluşan bir program. Fonksiyon Tanımı

Görsel Programlama (Visual Programming)

Lambda İfadeleri (Lambda Expressions)

İNÖNÜ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 2. SINIF 1. DÖNEM VERİ YAPILARI DERSİ LABORATUAR ÖDEVİ

DATA STRUCTURES. Lab II Metotlar, Diziler ve Hata Ayıklama. Doç. Dr. Aybars UĞUR

HSancak Nesne Tabanlı Programlama I Ders Notları

24 Kasım 2011 / Perşembe

C++ Dersi: Nesne Tabanlı Programlama

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

Operatörlerin Aşırı Yüklenmesi

Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 7. Bölüm Metot Tanımlama ve Kullanma

HSancak Nesne Tabanlı Programlama I Ders Notları

INPUTBOX KULLANIMI. Komut Düğmesine uygulanan algoritma örneği

1 GİRİŞ 1 C# Hakkında Genel Bilgiler 1.Net Framework 1 CLR 2 CLR Ve CTS 2 Temel Sınıf Kütüphanesi 3 CIL 3 Algoritma Nedir? 4 Sözde Kod (Pseudocode) 5

2 VISUAL STUDIO 2012 GELİŞTİRME ORTAMI

GÜZ YY. - MKT103 - GÖRSEL PROGRAMLAMA DERSİ - ARA SINAVI

Proje 1. Arayüz Tasarımı

ALGORİTMA VE PROGRAMLAMA II

ENF102 TEMEL BİLGİSAYAR BİLİMLERİ VE C/ C++ PROGRAMLAMA DİLİ. Gazi Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

DENEME SINAVI. ECDL BAŞLANGIÇ Hesap Tablosu

C# Yazım Kuralları ERCİYES. Ü. BİLGİSAYAR M. COMPUTER PROGRAMMING II 1 FEHİM KÖYLÜ

Nesne Tabanlı Programlama Dersi Edirne Kız Teknik ve Meslek Lisesi

1 Aralık 2011 / Perşembe

Upgrading Internet Technology skills of Information and Communication Technologies (ICT) Professionals

GRAFİK TASARIM. ACTION SCRIPT 3.0 Ders1 YARD. DOÇ. DR. MEHTAP YALÇINKAYA

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

ALGORİTMA VE PROGRAMLAMA II

C#(Sharp) Programlama Dili

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism )

İçerik. Kapsülleme ( Encapsulation ) Java da Kalıtım: Örnek 2.1. Kalıtım ( Inheritance ) Tekrar Ziyaret. Java da Kalıtım: Örnek 2.2.

ALGORİTMA VE PROGRAMLAMA I

Veri Yapıları Laboratuvarı

Aynı tipten çok sayıda değişken topluluğudur. X Y Score1 Score2 (0) (1) (2)...

Fonksiyonlar (Altprogram)

Önemli noktalar. Paradigma Nesnelere Giriş Mesajlar / Ara bağlantılar Bilgi Gizleme (Information Hiding ) Sınıflar(Classes) Kalıtım/Inheritance

Metin Dosyaları. Metin Dosyaları Dosya Açma ve Kapama Dosya Okuma ve Yazma Rastgele Erişim Standart Girdi/Çıktı Hata Kontrolü

BİL-141 Bilgisayar Programlama I (Java)

Pythonda değişkenlerin türlerini tanımlamaya gerek yoktur

YZM 2105 Nesneye Yönelik Programlama

C++ Dersi: Nesne Tabanlı Programlama 2. Baskı

Yrd. Doç. Dr. Caner ÖZCAN

Transkript:

2013 2014 Nesneye Dayalı Programlama Laboratuvarı Ders Sorumlusu: Yrd. Doç. Dr. Salih GÖRGÜNOĞLU Laboratuvar Sorumluları: M. Zahid YILDIRIM

İÇİNDEKİLER Deney 1: Visual Studio ve C++'a Giriş Uygulamaları... 3 1.1. Amaç ve Kapsam... 3 1.2. Deneyden önce yapılması gerekenler... 3 1.3. Deneyin Uygulaması... 4 1.4. Değerlendirme... 5 Deney 2: İşaretçiler(Pointers), Fonksiyonlar ve İsim Uzayı Uygulamaları... 6 2.1. Amaç Ve Kapsam... 6 2.2. Deneyden önce yapılması gerekenler... 6 2.3. Deneyin Uygulaması... 7 2.4. Değerlendirme... 9 Deney 3: Sınıflar ve Nesneler Üzerine Uygulamalar... 10 3.1. Amaç Ve Kapsam... 10 3.2. Deneyden önce yapılması gerekenler... 10 3.3. Deneyin Uygulanması... 11 3.4. Değerlendirme... 14 Deney 4: Nesneye Dayalı Programlamada Kalıtım Üzerine Uygulamalar... 15 4.1. Amaç Ve Kapsam... 15 4.2. Deneyden Önce Yapılması Gerekenler... 15 4.3. Deneyin Uygulanması... 15 4.4. Değerlendirme... 17 Deney 5: Nesneye Dayalı Programlamada Çok Biçimlilik Uygulamaları... 17 5.1. Amaç Ve Kapsam... 17 5.2. Deneyden önce yapılması gerekenler... 17 5.3. Deneyin Uygulanması... 17 5.4. Değerlendirme... 18 Deney 6: C++'da Şablonlar Oluşturma... 19 6.1. Amaç Ve Kapsam... 19 6.2. Deneyden önce yapılması gerekenler... 19 6.3. Deneyin Uygulanması... 19 6.4. Değerlendirme... 20 2

Deney 1: Visual Studio ve C++'a Giriş Uygulamaları 1.1. Amaç ve Kapsam Deneyde bazı Windows Form Elemanları, değişkenler, sabitler, #define komutu, if yapısı, for döngüsü, continue komutu ve diziler incelenecektir. Microsoft Visual Studio programı kullanılarak C++ dili kullanılarak Windows Form Uygulaması üzerinde C dilinden aşina olduğumuz temel C++ kodları ile küçük uygulamalar yapılacaktır. Uygulamalarda hatalar çıkarsa bu hatalar bulunup her bir uygulama çalışır hale getirilecektir. Bazı Windows Form elemanlarının kullanımı Temel C++ işlemleri #define komutu ile sabit tanımlama işlemlerinin yapılması if yapısının etkili biçimde kullanımı Dizi oluşturmak "Dizi başlangıç elemanlarının hepsine 0 değerinin atanması Dizi elemanlarına farklı değerler atamak "for" döngüsünün kullanımı 1.2. Deneyden önce yapılması gerekenler a) Microsoft Visual Studio 2010 veya daha önceki sürümlerinden biri kurulu olmalı b) Program çalıştırıldıktan sonra sırasıyla File->New->Project komutları takip edilmeli c) Visual C++ seçildikten sonra Windwos Forms Application seçeneğine gelinmeli d) Proje adı olarak Giris ismi verip OK butonuna tıklanarak proje oluşturulmalı e) Görsel Form üzerine Toolbox menüsünden aşağıdaki gibi bileşenler eklenmeli 3

f) Form elemanlarının her birinin Properties kısmındaki Text değerleri aşağıdaki gibi olmalıdır. textbox1, textbox2, label3, label4, label5 ve label6 nın Text değerleri boş bırakılmalıdır. 1.3. Deneyin Uygulaması a) "Giris.cpp" dosyasının en üst kısmına veya isterseniz "Form1.h" dosyasının en üst kısmına "#define" komutu ile GECMENOTU ve DERSSAYISI sabitleri tanımlayınız. b) "Ortalama Hesapla" etiketli butona çift tıklayıp "textbox1" ve "textbox2" ye girilen değerlerin ortalamasını "Vize" %40 ve "Final" %60 etki edecek şekilde int türünde ve ortalama isminde bir yerel değişkene aktarınız. Sonucu "label3" alanına yazdırınız. NOT 1: Bileşenlerin Text özelliklerini kod kısmında textbox1->text = şeklinde değiştirebilirsiniz. NOT 2: Dönüşümleri Convert::ToString( ), Convert::ToInt32(...), Convert::ToDouble(..) şekillerinde yapabilirsiniz. c) Önceki maddeyi çalışır şekilde yaptıysak, kod yazdığımız yerin devamına "if" yapısını kullanarak ortalama ile GECMENOTU sabitini karşılaştırarak öğrencinin dersten geçip geçmediğini "label4" alanına yazdırınız. d) Kod yazdığınız yerin devamına "if" yapısını kullanarak ortalamanın 4'lük sistemde karşılığını "double" türünde ve "dersnotu" isminde global bir değişkene atayınız. Ortalama GECMENOTU sabitinden küçük ise 0 değerini atayınız. dersnotu değişkeninin değerini label5 alanına yazdırınız. 4

e) "double" türünde DERSSAYISI sabiti kadar veri tutan "dersnotlari" adında global bir dizi değişkeni oluşturunuz. Dizinin bütün elemanlarının başlangıç değerlerini "0" atayınız. f) Dizinin kaçıncı elemanına veri ekleyeceğimizi hafızasında tutması için yine "int" türünde ve "yertutucu" isminde global bir değişken oluşturunuz. "yertutucu" değişkeninin başlangıç değerini "0" veriniz. g) "Diziye Ekle" etiketli butona çift tıklayıp buraya da "dersnotlari" dizisinin "yertutucu" nolu alanına ekleyip "yertutucu" değişkenini "1" arttırınız. label6 alanına Eklendi yazdırınız. Yalnız, bundan önce "if" yapısı kullanarak "yertutucu" numarası ile DERSSAYISI sabitinin aynı olup olmadığını sınayınız. Aynıysa "label6" alanına "Dizi Doldu" yazdırıp, arkasından hiç bir işlem yapmadan "return" komutu ile dönsün. h) "Dönem Ortalaması Hesapla" etiketli butona çift tıklayıp buraya da "for" döngüsünü kullanarak dizi elemanlarının ortalamasını alıp "label6" alanına yazdırınız. Dizinin elemanlarından değeri "2,5" in altında olan notları "continue" komutunu kullanarak ortalamaya katmayınız. Ortalamaya katılan ders sayısı için for döngüsünün üstünde int türünde ve gecerderssayisi adında yerel bir değişken oluşturup sayıyı tutunuz. 1.4. Değerlendirme No Deney Yeterlilikleri 1 Deneye hazır hale gelme. 2 "define" komutu kullanımı. 3 Visual C++ bileşenlerinin kullanımı. 4 "if" yapısının kullanımı. 5 for döngüsü kullanımı. 6 Değişken ve dizi tanımlama. 7 Değişkenlere ve dizi elemanlarına değer aktarma. 8 "continue" komutunun kullanımı. 9 Uygulamadaki hataları bulup düzelterek çalışır hale getirme. Öğrenci Seviyesi 1 2 3 4 5 10 Temiz ve anlaşılır kod yazma. 5

Deney 2: İşaretçiler(Pointers), Fonksiyonlar ve İsim Uzayı Uygulamaları 2.1. Amaç Ve Kapsam Deneyde işaretçilerin kullanımları, fonksiyonlar, aşırı yükleme, fonksiyonlara değer ve adres olarak parametre aktarımları, rastgele sayı üretimi ve isim uzayı ile ilgili uygulamalar yapılacaktır. İşaretçi(pointer) kullanımı Fonksiyonların kullanımı Fonksiyonlara değer ve adres olarak parametre aktarımı Rastgele sayı üretimi Fonksiyonların aşırı yüklenmesi ve çok biçimlilik uygulaması Yaşam alanı ve isim uzayı 2.2. Deneyden önce yapılması gerekenler a) Microsoft Visual Studio programı açılmalı b) "Deney2" adında bir "Windows Form Application" projesi oluşturulmalı c) Görsel Form üzerine Toolbox menüsünden aşağıdaki gibi bileşenler eklenmeli d) "textbox4" nesnesinin "Name" özelliğine "OrtakText" değerini veriniz. e) "OrtakText" nesnesinin "MultiLine" özelliği "True" yapılmalı. f) Form elemanlarının her birinin Properties kısmındaki Text değerleri aşağıdaki gibi olmalıdır. textbox1, "textbox2", "textbox3" ve "OrtakText" in Text değerleri boş bırakılmalıdır. 6

2.3. Deneyin Uygulaması a) "İşaretçi Uygulaması" etiketli butona çift tıklayıp, "a" isminde ve "int" türünde bir yerel değişken ve "aptr" isminde ve "int" türünde yerel bir işaretçi(pointer) oluşturunuz. "a" değişkenine herhangi bir tam sayı atadıktan sonra "a" değişkeninin adresini "aptr" işaretçisine atayınız. "a" değişkeninin adresini, "a" değişkeninin değerini, "aptr" işaretçisinin adresini, "aptr" işaretçisinin değerini(tuttuğu adresi) ve "aptr" işaretçisinin gösterdiği değeri(*aprt) "OrtakText" alanına birbiri ardına ekleyerek yazdırınız. a değişkeninin değerini değiştiriniz. Yukarıdaki değerleri tekrar "OrtakText" alanına birbiri ardına ekleyerek yazdırınız. NOT 1: Aynı textbox kutusunun içine yazdırdığımız için yazdırırken alt satıra inip yeni satır oluşturmak için "\r\n" söz dizimini kullanabilirsiniz. NOT2: İlk yazdırma kodunda sonra OrtakText in Text alanına değer atarken önceki yazdırılanların silinmemesi için değer atamasını "+=" ifadesini kullanarak yapmayı hatırlayınız. NOT 3: Adresleri yazdırırken önce "int" türüne dönüştürüp, daha sonra hexadecimal formatta göstermelisiniz. 7

b) "Form1" isimli sınıfın bloğu içinde istediğiniz herhangi bir yere "int" geri dönüş tipinde ve "maksimum" isminde "int" türünde üç tane parametre alan bir fonksiyon tanımlayınız. "maksimum" isimle fonksiyonun içine girilen üç parametrenin en büyük değeri bulup geri döndüren kodları yazınız. "Fonksiyon Kullanımı" butonuna çift tıklayıp bu alana da "textbox1", "textbox2" ve "textbox3" alanlarındaki girilen değerleri "maksimum" isimli fonksiyona parametre olarak gönderip, dönüş değerini "OrtakText" alanına yazdıran kodları yazınız. c) "Form1" isimli sınıfın bloğu içinde, "void" geri dönüş türünde ve parametre olarak iki tane "int" türünde değer alan "degistir1" fonksiyonu ve yine "void" geri dönüş türünde ve parametre olarak iki tane "int" türünde adres alan "degistir2" fonksiyonu oluşturunuz. Oluşturduğunuz bu fonksiyonların ikisinin de içine, parametre değişkenlerinin değerlerini birbiri ile değiştiren kodları yazınız. "Parametre Aktarımı" butona çift tıklayıp bu alanda "int" türünde "a" ve "b" diye iki yerel değişken oluşturunuz. Bu iki değişkenlere de tam sayı değerleri atayınız. Önceki "a" ve "b" değerlerini "OrtakText" alanına yazdırın. "degistir1" fonsiyonunu "a" ve "b" değişkenlerini parametre olarak göndererek çağırın. "degistir1" den sonraki "a" ve "b" değerlerini "OrtakText" alanına yazdırınız. Altına, aynı işlemi "degistir2" fonksiyonu için de yapan kodları yazınız. Parametre olarak değer alan ile adres alan fonksiyonların yaptıkları iş arasındaki farkı görünüz. NOT 4: "OrtakText" alanına her yazdırmanızın sonunda alt satır komutu olan "\r\n" söz dizimini eklerseniz daha güzel ve okunaklı bir "OrtakText" alanı görünümü elde edebilirsiniz. Aynı şekilde olup parametreleri referans olarak alan "degistir3" fonksiyonunu oluşturup aynı işlemleri ona da uygulayınız. d) Hangi değerler arasında rastgele sayı üreteceğini parametre olarak alıp, üsrettiği sayıyı "int" türünde döndüren "sayiuret" isimli fonksiyon oluşturunuz. "Sayı Üret" butonuna "textbox1" ve "textbox2" alanlarından aldığı değerleri parametre olarak "sayiuret" fonksiyonuna gönderip sayıyı "OrtakText" alanına yazdıran kodları yazınız. (Daha sağlam çalışan bir uygulama olması için textbox alanlarına girilen değerleri kontrol eden kod blokları yazabilirsiniz.) 8

e) "void" geri dönüş türünde "yaz()", "yaz(string^)" ve "yaz(string^, int)" şeklinde üç tane fonksiyon oluşturunuz. Aşırı Yükleme butonuna tıklandığında "yaz()" fonksiyonu "*" karakterini 10 defa "OrtakText" alanına yazsın. "yaz(string^)" fonksiyonu "textbox1" alanına girilen karakteri 10 defa "OrtakText" alanına yazsın. "yaz(string^, int)" fonksiyonu "textbox1" alanındaki karakteri "textbox2" alanındaki sayı kadar "OrtakText" alanına yazsın. f) "Deney2" adlı isim uzayının üstünde bir yere "isimuzayi1" ve "isimuzayi2" isimlerinde iki tane isim uzayı oluşturunuz. Bu iki isim uzayı içinde aynı isimde ve aynı türde birer değişken oluşturunuz. Değişkenlere farklı değerler atayınız. "İsim Uzayı" butonuna çift tıklayıp, "isimuzayi1" deki değişkenin değerini "using" direktifi kullanarak, "isimuzayi2" deki değişkenin değerini ise "using" direktifi kullanmadan "OrtakText" alanına yazdırınız. 2.4. Değerlendirme No Deney Yeterlilikleri 1 Deneye hazır hale gelme. 2 Visual C++ bileşenlerinin kullanımı. 3 İşaretçi(pointer) kullanımı. 4 Fonksiyonları kullanma. 5 Fonksiyonlara parametre aktarımı. 6 Rastgele sayı üretimi. 7 Aşırı yükleme kullanımı. 8 İsim uzayı kullanımı. 9 Uygulamadaki hataları bulup düzelterek çalışır hale getirme. Öğrenci Seviyesi 1 2 3 4 5 10 Temiz ve anlaşılır kod yazma. 9

Deney 3: Sınıflar ve Nesneler Üzerine Uygulamalar 3.1. Amaç Ve Kapsam Deneyde sınıf ve nesne oluşturma ve kullanımları, dinamik bellek kullanımı, kurucu ve yok ediciler, kopyalama kurucuları ve this işaretçisi ile ilgili uygulamalar yapılacaktır. Sınıf ve nesne kullanımı Dinamik bellek kullanımı Kurucu ve yok edici fonksiyonlar Kopyalama kurucuları "this" işaretçisi 3.2. Deneyden önce yapılması gerekenler a) Microsoft Visual Studio programı açılmalı b) "Deney3" adında bir "Windows Form Application" projesi oluşturulmalı c) "Form1" üzerine bir button ve textbox eklenmeli d) "button1" nesnesinin "Text" özelliğine "Çalıştır" yazınız. e) "textbox1" nesnesinin "Name" özelliğine "OrtakText" yazınız, "Text" özelliğini boş bırakınız ve "MultiLine" özelliğini "True" yapıp textbox ı genişletiniz. f) Deney3.h isimli yeni bir dosya ekleyiniz. g) Form1.h dosyasının en üstünde Deney3.h dosyasını #include ediniz. 10

3.3. Deneyin Uygulanması a) Deney3.h dosyasının içinde "Dortgen" adlı bir sınıf oluşturunuz. Sınıfta dörtgenin boyutlarını belirleyecek olan "x" ve "y" adında iki tane "int" türünde değişken oluşturunuz. "void DegerVer(int,int)" ve "int Alan (void) şeklindedortgen" sınıfına ait iki tane fonksiyon oluşturunuz. "DegerVer" fonksiyonu aldığı "a" ve "b" değerlerini sınıfın "x" ve "y" değişkenlerine atasın. "Alan" fonksiyonu "x" ve "y" değerlerini kullanarak dortgenin alanını hesaplayıp döndürsün. "button1" bileşenine çift tıklayıp "button1_click" olayının içinde "Dortgen" sınıfından "D1" ve "D2" isimlerinde iki tane "Dortgen" nesnesi oluşturunuz. "D1" ve "D2" nesnelerinin "DegerVer" fonksiyonlarını kullanarak her birine ikişer tane tam sayı olarak parametre girerek dortgenlerin boyutlarını belirleyiniz. Her iki nesnesinin "Alan" fonksiyonlarını çağırarak sonuçları "OrtakText" alanına yazdırınız. NOT1: OrtakText alanına yazdırma işlemleri yaparken alt satıra inmesi için kodun sonuna "\r\n" ifadesini eklemeyi unutmayınız. NOT2: Visual Studio ortamında çalıştığımızdan String^ türü gibi bazı türleri kullanabilmemiz için sınıf oluştururken Form1 sınıfında olduğu gibi ref ibaresini ekleyiniz( public ref class Dortgen ) ve dosyanın en üstüne using namespace System; ibaresini ekleyiniz. b) "button1_click" olayının içinde yazdığınız kodları yorum satırları haline getiriniz. "Dortgen" sınıfından "P1" ve "P2" isimlerinde iki işaretçi oluşturduktan sonra dinamik bellek alanından birer tane "Dortgen" nesnesi oluşturup bu işaretçilere atayınız. "Dortgen" nesnelerinin "DegerVer" ve "Alan" fonksiyonlarını kullanarak daha önce hesaplayıp yazdırdığımız işlemlerin aynısını dinamik bellekte "Dortgen" nesneleri tutan "P1" ve "P2" işaretçilerini kullanarak yapınız. Yazdırma işlemlerinin ardından "P1" ve "P2" işaretçilerinin dinamik bellekte tuttuğu nesneleri serbest bırakınız. 11

c) "button1_click" olayının içinde en son yazdığınız kodları da yorum satırları haline getiriniz. "Dortgen" sınıfına ait "Dortgen()" ve "Dortgen(int,int)" şekillerinde iki adet kurucu fonksiyon oluşturunuz. "Dortgen()" kurucu fonksiyonu içinde "Dortgen" sınıfının "x" ve "y" üyelerine sizin belirlediğiniz sabit değerleri atayınız ve parametresiz kurucunun çalıştığını ve nesnenin "x" ve "y" değerlerini "OrtakText" alanında belirten kodlamayı yapınız. "Dortgen(int,int)" kurucu fonksiyonu içinde "Dortgen" sınıfının "x" ve "y" üyelerine, aldığı parametreleri atayan ve parametreli kurucunun çalıştığını ve nesnenin "x" ve "y" değerlerini "OrtakText" alanında belirten kodlamayı yapınız. Bir tane de yok edici fonksiyon yazıp içine yok edicinin çalıştığını "OrtakText" alanında belirten kodu yazınız. "button1_click" alanının içinde yorum satırlarının arkasına "Dortgen" sınıfından "D1" ve "D2(5,10)" isimlerinde iki tane nesne oluşturunuz. d) "button1_click" olayının içinde en son yazdığınız kodları da yorum satırları haline getiriniz. Dortgen sınıfını tanımlarken kullandığımız ref ibaresini siliniz ve Deney3.h dosyasındaki String^ ibaresini ve değişkenlerini kullandığınız bütün komutları yorum satırı haline getiriniz. Dortgen sınıfının içinde, parametre olarak const beliryicisi ile Dortgen türünde bir referans alan Dortgen::Dortgen(const Dortgen &nesne) şeklinde bir kopyalama kurucusu oluşturunuz. Bu fonksiyonun içine, parametre olarak aldığı Dortgen nesnesinin x ve y değerlerini, içinde bulunduğu Dortgen nesnesinin x ve y değerlerine atayan kodları yazınız. "button1_click" alanının içinde yorum satırlarının arkasına "Dortgen" sınıfından "D1" isminde bir nesne oluşturunuz. D1 nesnesinin DegerVer fonksiyonunu kullanarak nesneni x ve y değerlerine istediğiniz tam sayı değerlerini veriniz. Dortgen sınıfından D2 isminde yeni bir nesne oluşturunuz. D2 nesnesini D1 nesnesine eşitleyiniz. Dortgen sınıfından D3 isminde yeni bir nesne daha oluşturunuz ve oluştururken D1 nesnesini parametre olarak giriniz. Böylece D3 nesnesinin kopyalama kurucusunu çalıştırmış olacaksınız. 12

Her üç nesnenin Alan fonksiyonunu kullanarak alanlarını OrtakText alanına ardı ardına yazdırınız. ÖDEV : Nesne eşitlemeyle kopyalama kurucusu arasındaki farkı araştırınız. e) "button1_click" olayının içinde en son yazdığınız kodları da yorum satırları haline getiriniz. "Dortgen" sınıfının içinde, geri dönüş tipi "Dortgen" türünde bir pointer(işaretçi) olan ve parametre olarak "Dortgen" türünde bir referans alan "Dortgen *Buyuk(Dortgen &nesne)" şeklinde bir fonksiyon oluşturunuz. "Buyuk" fonksiyonunun içinde "alan1" ve "alan2" isimlerinde iki tane "int" türünde değişken oluşturunuz. "alan1" değişkenine içinde yer aldığı nesnenin "x" ve "y" değerlerinin çarpımını atayınız. "alan2" değişkenine "Buyuk" sınıfına parametre olarak gelen nesnenin "x" ve "y" değerlerinin çarpımını atayınız. "alan1" ve "alan2" değişkenlerinin değerlerini karşılaştırıp, alan değeri büyük olan nesneyi döndürünüz. "button1_click" alanının içinde yorum satırlarının arkasına "Dortgen" sınıfından "D1" ve "D2" isimlerinde iki tane nesne oluşturunuz. Nesneleri oluştururken her birine ikişer tane istediğiniz başlangıç değerlerini veriniz. "Dortgen" tipinde ve "D3" adında bir işaretçi oluşturunuz. "D2" nesnesinin "Buyuk" fonksiyonunu "D1" nesnesini parametre olarak girerek çağırınız ve sonucu "D3" işaretçisine atayınız. "D3" işaretçisinin "x" ve "y" değerlerini ve "Alan" fonksiyonunun döndürdüğü değeri "OrtakText" alanına yazdırınız. 13

3.4. Değerlendirme No Deney Yeterlilikleri 1 Deneye hazır hale gelme. 2 Visual C++ bileşenlerinin kullanımı. 3 Sınıf ve nesne oluşturma. 4 Sınıf ve nesne kullanımı. 5 Dinamik bellek kullanımı. 6 Kurucu ve yok edici fonksiyon kullanımı. 7 Kopyalama kurucusu kullanımı. 8 this işaretçisi kullanımı. 9 Uygulamadaki hataları bulup düzelterek çalışır hale getirme. Öğrenci Seviyesi 1 2 3 4 5 10 Temiz ve anlaşılır kod yazma. 14

Deney 4: Nesneye Dayalı Programlamada Kalıtım Üzerine Uygulamalar 4.1. Amaç Ve Kapsam Deneyde nesneye dayalı programlamada kalıtım ve çoklu kalıtım ile ilgili uygulamalar yapılacaktır. Kalıtım Çoklu Kalıtım 4.2. Deneyden Önce Yapılması Gerekenler a) Microsoft Visual Studio programı açılmalı b) "Deney4" adında bir "Windows Form Application" projesi oluşturulmalı c) "Form1" üzerine bir button ve textbox eklenmeli d) "button1" nesnesinin "Text" özelliğine "Çalıştır" yazınız. e) "textbox1" nesnesinin "Name" özelliğine "OrtakText" yazınız, "Text" özelliğini boş bırakınız ve "MultiLine" özelliğini "True" yapıp textbox ı genişletiniz. f) Kalitim.h isimli yeni bir dosya ekleyiniz. g) Form1.h dosyasının en üstüne #include Kalitim.h önişlemcisini ekleyiniz. h) "Kalitim.h" dosyasının en üstüne #include <string> önişlemcisini ve "using namespace std;" ibresini ekleyiniz. 4.3. Deneyin Uygulanması a) "Kalitim.h" dosyasında "Cokgen" adında bir sınıf oluşturunuz. Bu sınıfta "protected" erişim belirleyicisi altında "genislik" ve "yukseklik" adında iki tane "int" türünde değişken ve "public" erişim belirleyicisi altında "int" türünden iki tane parametre alan "void" dönüş tipli "DegerVer" adında bir fonksiyon oluşturunuz. Bu fonksiyon aldığı parametreleri "genislik" ve "yukseklik" değişkenlerine atasın. "Dortgen" ve "Ucgen" adından "Cokgen" sınıfından türeyen iki tane sınıf oluşturunuz. Her birinin "public" belirleyicisi altında parametre almayan ve "int" dönüş tipinde "Alan" adında birer fonksiyon oluşturunuz. "Alan" fonksiyonlarının içine, "Cokgen" sınıfından miras aldıkları "genislik" ve "yukseklik" değişkenlerini kullanarak o şeklin alanlarını hesaplayan kodu yazınız. "button1" e çift tıklayarak "button1_click" fonksiyonu içine "Dortgen" ve "Ucgen" sınıflarından birer nesne oluşturunuz. 15

Nesnelerin DegerVer fonksiyonlarını kullanarak ikişer tane tam sayı parametresi girerek genişlik ve yükseklik değerleri veriniz. Oluşturduğumuz şekillerin alanlarını nesnelerin "Alan" fonksiyonlarını kullanarak "OrtakText" alanına yazdırınız. b) Şimdi de "Dortgen" ve "Ucgen" sınıfları içinde parametre almayan ve "string" türünde dönüş sağlayan Sekil adında birer fonksiyon oluşturunuz. Bu fonksiyonların içinde şeklin ismini döndüren kodu yazınız. Yazdir adında yeni bir sınıf oluşturunuz. Bu sınıfın içinde "public" belirleyicisi altında "string" ve "int" türlerinde iki tane parametre alan ve dönüş tipi "string" olan "Yaz" adında bir fonksiyon oluşturunuz. Bu fonksiyon aldığı parametreleri yazdırmak için düzenli bir şekilde geri döndürsün. NOT1 : Kullandığımız temel string türündeki değişkenleri ve değerleri birleştirirken satır satır "+=" operatörünü kullanabilirsiniz. NOT2 : Temel "int" türünü temel "string" türüne dönüştürmek için "to_string(static_cast<long long>(degisken))" ifadesini kullanabilirsiniz. Dortgen ve Ucgen sınıflarını Cokgen sınıfıyla beraber aynı zamanda Yazdir sınıfından da türetiniz. "button1" e çift tıklayarak kodun devamına "Dortgen" ve "Ucgen" sınıflarından oluşturduğumuz nesnelerin "Yaz" fonksiyonlarını kullanarak dönüş değerlerini "OrtakText" alanına yazdırınız. NOT3 : Temel "string" türünden "String^" türüne dönüştürme yapmak için "gcnew String(degisken.c_str())" ifadesini kullanabilirsiniz. Çünkü textbox bileşeni String^ türünde değer alıyor. 16

4.4. Değerlendirme No Öğrenci Seviyesi Deney Yeterlilikleri 1 1 Deneye hazır hale gelme. 2 Kalıtımı kullanabilme. 3 Çoklu kalıtımı kullanabilme. 4 Uygulamadaki hataları bulup düzelterek çalışır hale getirme. 5 Temiz ve anlaşılır kod yazma. 2 3 4 Deney 5: Nesneye Dayalı Programlamada Çok Biçimlilik Uygulamaları 5.1. Amaç Ve Kapsam Deneyde nesneye dayalı programlamada çok biçimlilik ile ilgili uygulamalar yapılacaktır. Çok Biçimlilik 5.2. Deneyden önce yapılması gerekenler a) b) c) d) e) Microsoft Visual Studio programı açılmalı "Deney5" adında bir "Windows Form Application" projesi oluşturulmalı "Form1" üzerine bir button ve textbox eklenmeli "button1" nesnesinin "Text" özelliğine "Çalıştır" yazınız. "textbox1" nesnesinin "Name" özelliğine "OrtakText" yazınız, "Text" özelliğini boş bırakınız ve "MultiLine" özelliğini "True" yapıp textbox ı genişletiniz. f) Cokbicimlilik.h isimli yeni bir dosya ekleyiniz. g) Form1.h dosyasının en üstüne #include Cokbicimlilik.h önişlemcisini ekleyiniz. h) "Deney4" projemizdeki "Kalitim.h" dosyasının içeriğini tamamen kopyalayarak, projemizdeki "Cokbicimlilik.h" dosyasına yapıştırınız. 5.3. Deneyin Uygulanması a) "Dortgen" ve "Ucgen" sınıflarının "Yazdir" sınıfından türeme özelliklerini kaldırınız. "Yazdir" sınıfındaki "Yaz" fonksiyonunu "static" hale getiriniz ve parametre olacak sadece "Cokgen" tipinde referans almasını sağlayınız. 17 5

"Yazdir" sınıfının "Yaz" fonksiyonu parametre olarak aldığı "Cokgen" nesne referansının fonksiyonlarını kullanarak şeklin alan ve ismini, yazdırmaya hazır bir şekilde düzenleyerek geri döndürsün. "Cokgen" sınıfına aynı "Dortgen" ve" Ucgen" sınıflarında oluşturulduğu gibi "Alan" ve "Sekil" isimlerinde iki tane "virtual" fonksiyon oluşturunuz. Bu fonksiyonlar boş değer veya 0 değeri döndürsün. "button1" e çift tıklayarak "button1_click" fonksiyonu içine "Dortgen" ve "Ucgen" sınıflarından birer tane nesne oluşturunuz. Nesnelerin "DegerVer" fonksiyonlarını kullanarak ikişer tane tam sayı parametresi girerek genişlik ve yükseklik değerleri veriniz. "Yazdir" sınıfının "Yaz" fonksiyonunu "Yazdir" nesnesi oluşturmadan statik bir şekilde kullanarak ve fonksiyona "Dortgen" ve "Ucgen" sınıflarından ürettiğimiz nesneleri parametre olarak girerek, dönen "string" türden değerleri "String^" türüne çevrimini yaptıktan sonra "OrtakText" alanına yazdırınız. 5.4. Değerlendirme No Deney Yeterlilikleri 1 Deneye hazır hale gelme. 2 Virtual ve static fonksiyon oluşturabilme. 3 Çok biçimliliği kullanabilme. 4 Uygulamadaki hataları bulup düzelterek çalışır hale getirme. Öğrenci Seviyesi 1 2 3 4 5 5 Temiz ve anlaşılır kod yazma. 18

Deney 6: C++'da Şablonlar Oluşturma 6.1. Amaç Ve Kapsam Deneyde nesneye dayalı programlamada şablonlar ile ilgili uygulamalar yapılacaktır. Şablonlar 6.2. Deneyden önce yapılması gerekenler a) Microsoft Visual Studio programı açılmalı b) "Deney6" adında bir "Windows Form Application" projesi oluşturulmalı c) "Form1" üzerine bir button ve textbox eklenmeli d) "button1" nesnesinin "Text" özelliğine "Çalıştır" yazınız. e) "textbox1" nesnesinin "Name" özelliğine "OrtakText" yazınız, "Text" özelliğini boş bırakınız ve "MultiLine" özelliğini "True" yapıp textbox ı genişletiniz. f) Sablon.h isimli yeni bir dosya ekleyiniz. g) Form1.h dosyasının en üstüne #include Sablon.h önişlemcisini ekleyiniz. 6.3. Deneyin Uygulanması a) Sablon.h dosyasında GetMax adında iki tane parametre alan bir template oluşturunuz. Dönüş tipi ve aldığı iki parametre aynı tiplerde olacak. Bu şablon aldığı iki parametreden en büyük olanını döndürsün. "button1" e çift tıklayarak "button1_click" fonksiyonu içine üç tane int türünde değişken ve üç tane float türünde değişken oluşturunuz. int türdeki değişkenlere i, j ve k isimlerini veriniz. float türdeki değişkenlere de l, m ve n isimleriniz veriniz. i ve j değişkenlerine istediğiniz tam sayı değerlerini veriniz. l ve m değişkenlerine de istediğiniz ondalıklı sayı değerlerini veriniz. i ve j değişkenlerini parametre olarak girerek GetMax şablonunu int türünde dönüş sağlayacak şekilde çağırınız ve sonucu k değişkenine atayınız. l ve m değişkenlerini parametre olarak girerek GetMax şablonunu float türünde dönüş sağlayacak şekilde çağırınız ve sonucu n değişkenine atayınız. 19

k ve n değerlerini OrtakText alanında gösteriniz. 6.4. Değerlendirme No Deney Yeterlilikleri 1 Deneye hazır hale gelme. 2 Şablon oluşturabilme. 3 Var olan şablonu kullanabilme. 4 Uygulamadaki hataları bulup düzelterek çalışır hale getirme. Öğrenci Seviyesi 1 2 3 4 5 5 Temiz ve anlaşılır kod yazma. 20