Nesneye Dayalı Programlama

Benzer belgeler
Nesneye Dayalı Programlama

Nesneye Dayalı Programlama

Nesneye Dayalı Programlama

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

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

Nesneye Dayalı Programlama

Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır.

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

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

public static int Toplam int x, int y

NESNEYE DAYALI PROGRAMLAMA 9. HAFTA UYGULAMA DERSİ

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

BİL-142 Bilgisayar Programlama II

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.

Lab7 DOĞU AKDENİZ ÜNİVERSİTESİ BİLGİSAYAR VE TEKNOLOJİ YÜKSEKOKULU BİLGİSAYAR PROGRAMCILIĞI. BTEP212 Java. Uygulama1: package javaapplication58;

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.

Yazılım Kodlama ve İ simlendirme Standartları v1.0

HSancak Nesne Tabanlı Programlama I Ders Notları

Arayüz (Interface) Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 1

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

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

Sunum İçeriği. Programlamaya Giriş

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

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

Operator Aşırı Yükleme (Operator OverLoading)

7. HAFTA. Erişim Belirleyiciler

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

Ders 8 Konu Özeti ve Problemler

BTEP243 Ders 3. class Yazım Kuralı:

YZM 2105 Nesneye Yönelik Programlama

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:

İç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.

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

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

Nesne Yönelimli Programlama ve Kalıtım

YZM 2105 Nesneye Yönelik Programlama

HSancak Nesne Tabanlı Programlama I Ders Notları

BMÜ-111 ALGORİTMA VE PROGRAMLAMA AKIŞ KONTROLÜ YRD. DOÇ. DR. İLHAN AYDIN

HSancak Nesne Tabanlı Programlama I Ders Notları

Nesne Yönelimli Programlama

Length: metin uzunluğunu yada diğer bir deyişle dizi elaman sayısını döndürür.

Görsel Programlama DERS 02. Görsel Programlama - Ders02/ 1

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 2

Paket Erişimleri. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 4 1

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ

Kapsülleme ( Encapsulation ) BBS-515 Nesneye Yönelik Programlama

/*int sayi1, sayi2,toplam=0;

Erişim konusunda iki taraf vardır:

BİL-141 Bilgisayar Programlama I (Java)

Programlama Dili Prensipleri. Lab Notları 4

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

Nesne Yönelimli Programlama

Nesneye Yönelik Programlama (OOP) 7.Hafta

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

PAKET ERİŞİMLERİ SINIFLARIN YENİDEN KULLANIMI. BMU-112 Algoritma ve Programlama-II Yrd. Doç.Dr. İlhan AYDIN

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

Android Ders Notları

NESNE TABANLI PROGRAMLAMA

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

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

Programlama Dilleri 3

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

11- FONKSİYONLAR (FUNCTIONS)

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

Fatura Dinamik Kodlama İyileştirmeleri

BİL-142 Bilgisayar Programlama II

Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 3. Bölüm Veri Tipleri ve Değişkenler

if (ad == "Sabri") Console.WriteLine("Merhaba Sabri. Ne zamandır gözükmüyodun...");

C# Metotlar ve Metot Tanımlama

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

Java 2 Standart Edition SDK Kurulum ve Java ya Giriş

C++ Dersi: Nesne Tabanlı Programlama

BİLG Dr. Mustafa T. Babagil 1

Ders 8: Metotlar. barisgokce.com

Diziler İndisli Değişkenler

C# da basit console uygulamaları. C# da basit console uygulamaları

MAK 1005 Bilgisayar Programlamaya Giriş. Fonksiyonlar. Prof. Dr. Necmettin Kaya

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

Öğr. Gör. Musa AYDIN Fatih Sultan Mehmet Vakıf Üniversitesi

Bu parçalar arasındaki ilişkiyi kullanıp büyük çaplı programlar geliştirme tekniğine de nesne yönelimli programlama denir.

VERİ TABANI İŞLEMLERİ (NESNE TABANLI PROGRAMLAMA TEKNİĞİ İLE)

Klavyeden Basit Giriş/Çıkış İşlemleri

MOBIL UYGULAMA GELIŞTIRME

Her Select Case bloğu, mutlaka End Select ile bitmek zorundadır.

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

İl İlçe uygulaması. : Seçilen ile ait ilçeleri listeleyen program. //İl değişkeni için kodu aşağıdaki sayfadan kopyalayınız.

Akış Konrol Mekanizmaları

Döngü Komutları. Komutu. while Komutu Diğer Operatörler Bileşik Komut for Komutu. İçiçe Döngüler break ve continue Komutları

Sınıflar ve Yapılar Arasındaki Farklılıklar. Değer ve Referans Türde Olan Aktarımlar

YZM 2105 Nesneye Yönelik Programlama

Görsel Programlama 1

NESNEYE YÖNELİK PROGRAMLAMA

Programlama Dilleri 3

BPR151-Algoritma ve Programlama I Uygulama -1

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

Genel Kullanılış 1: [değişken ismi] = [değişken ismi] [işlem] [sayı veya string ifade veya değişken]

A- VERİTABANI BAĞLANTISINI HAZIR NESNE KULLANARAK YAPMA

Değişkenler, içerisinde tek bir değer tutabilen yapılardır. Örneğin haftanın günlerini değişkenlerde tutmak istersek, her bir gün adı için bir

Programlama Dillerinde Kullanılan Veri Tipleri

Dr. Fatih AY Tel: fatihay@fatihay.net

Transkript:

SAKARYA ÜNİVERSİTESİ Nesneye Dayalı Programlama Hafta 6 Prof. Dr. Ümit KOCABIÇAK Öğr. Gör. Özgür ÇİFTÇİ Bu ders içeriğinin basım, yayım ve satış hakları Sakarya Üniversitesi ne aittir. "Uzaktan Öğretim" tekniğine uygun olarak hazırlanan bu ders içeriğinin bütün hakları saklıdır. İlgili kuruluştan izin almadan ders içeriğinin tümü ya da bölümleri mekanik, elektronik, fotokopi, manyetik kayıt veya başka şekillerde çoğaltılamaz, basılamaz ve dağıtılamaz. Her hakkı saklıdır 2010 Sakarya Üniversitesi

6.1. Sınıf Üyeleri 3: Özellikler (Property) Sınıf üyelerinden alanların bilinçsiz yada kötü niyetli kullanımlarına karşın önlem almak gerekir. Benzeri şekilde veri bütünlüğü ve doğruluğu açısından alanların(field) sınıf dışına public olarak açılması önerilmemektedir. Örneğin integer tipinden tanımlanmış bir yas değişkenine negatif bir değer atanabilir. Yada verilerin belirli bir değer aralığında girilmesi istenebilinir. Bu noktada NDP, veri değerinin kabulünden sonra verinin şartları sağlayıp sağlamaması kontrolünden daha ziyade daha verinin kabulü esnasında verinin gerekli şartları sağlayıp sağlamadığının kontrolünü tavsiye eder. Şartlar sağlandığı taktirde de kabul edilmesi aksi taktirde sistemin zarar görmesini engeller. Bazen sınıflarda private bölgelere ulaşılması gerekmektedir. Bir çok sınıfta sarmalama gereği bu alanlara ulaşılmaması gerekirken, kalıtım olmayan yada paket içersinde yer alamayan bir sınıfın bu değere bağlı işlemler yapıyor durumu ile karşılaşılabilinir. Programların bazı bölümlerinde bir sınıfa ait alanların sadece okunabilme olanağı yada yalnızca yazılabilinip okunamama özellikleri sağlamak gerektiğinde özellikleri kullanabiliriz. Örnek 1: (Veri doğrulama) class Ornek public int yas; class Program Ornek o = new Ornek(); o.yas = -30; Console.WriteLine("Yaş : 0", o.yas); 2

Burada büyük bir hata vardır. Yaş hiç bir zaman negatif bir değer olamaz. Ancak yas değişkeni sınıf içersinde int olarak tanımlandığından negatif bir değer girilebilmektedir. Örnek 2: (Veri bütünlüğü)araçların trafiğe çıkış yılı baz alan bir banka 2-9 yaş araçlara 2. el kredisi vermektedir. class Banka public DateTime trafigecikistarihi; public int TasitYasiHesapla() return Convert.ToInt32(DateTime.Now.Year - trafigecikistarihi.year); class Program Banka ban = new Banka(); Console.Write("Aracın trafiğe çıkış tarihini giriniz :"); ban.trafigecikistarihi = DateTime.Parse(Console.ReadLine()); Console.WriteLine("Araç Yaşı: " + ban.tasityasihesapla()); 3

Örnek 1 deki gibi benzeri bir hata oluşmuş girilen tarih bugünün tarihinden büyük girilmiş ve hesaplamalar sonucu ekrana yazdırılmıştır. Oysaki burada bir kontrol yapılmalı bugünün tarihinden büyük değerler girildiğinde program hata mesajı üretmeliydi. Benzeri şekilde araç yaşı belirtilen 2-9 yaş aralığında ise kredininin verilebileceği aksi durumda ise kredinin verilemeyeceği şeklinde sonuçlara ulaşabilmeliydi. 2. örneğimizi aşağıdaki şekilde düzenleyelim. class Banka private DateTime trafigecikistarihi=datetime.now; public DateTime GetTrafigeCikisTarihi() return trafigecikistarihi; public void SetTrafigeCikisTarihi(DateTime tarih) if (tarih > DateTime.Now) Console.WriteLine("Hatalı Tarih Girişi"); else trafigecikistarihi = tarih; public int TasitYasiHesapla() return Convert.ToInt32(DateTime.Now.Year - trafigecikistarihi.year); class Program Banka ban = new Banka(); Console.Write("Aracın trafiğe çıkış tarihini giriniz :"); ban.settrafigecikistarihi(datetime.parse(console.readline())); Console.WriteLine("Araç Yaşı: " + ban.tasityasihesapla()); 4

6.2. C# ta Özellikler (Property) Veri doğrula, veri bütünlüğü ve public alanların güvenliği için C# özel yapıları sınıf üyesi olarak kabul etmiştir. Okunabilme (get) ve yazılabilme(set) yapıları özel bir blok içersinde gösterilmektedir. class Ornek private int yas; public int Yas get // okunabilme özelliği return yas; set // değer atanabilme(yazılabilme özelliği) yas = value; 5

class Program Ornek o = new Ornek(); o.yas = 30; Console.WriteLine(o.Yas); get bloğu içersinde okuma, set bloğu içersinde yazma işlemi yapılmaktadır. C# 3.0 ile gelen bir başka özellik ise default şekilde yazılan get-set bloğunun doldurulmasına gerek olmadan otomatik olarak tanımlanabilmesidir. class Yeni private string m_adi; public string Adi get; set; class Program Yeni y = new Yeni(); y.adi = "NDAT"; Console.WriteLine(y.Adi); 6

6.2.1. Sadece Okunabilir Özellikler (Property) NDP de sarmalama amacıyla değerinin değiştirilmesi güvenlik açısından yasaklanmış sadece okunabilir alanlar oluşturulama istendiğinde get-set bloğunda sade get tarafı yazılmalıdır. class getproperty private int yaricap = 20; public int Yaricap get return yaricap; class Program getproperty gp = new getproperty(); gp.yaricap = 100; // hata sadece değeri okunabilinir. Console.WriteLine(gp.Yaricap); 7

6.2.1. Sadece Yazılabilir Özellikler (Property) Değerinin değiştirilmesi sadece yazılabilinir ancak okunamayab özellikler oluşturulmak istendiğinde getset bloğunda sade set tarafı yazılmalıdır. class setproperty private int m_a; public int A set m_a = value; class Program setproperty sp = new setproperty(); sp.a = 200; Console.WriteLine(sp.A); // hata sadece değeri atabilinir. 8

6.2.1. Özelliklerde (Property) Kalıtım Taban sınıfta tanımlanan property diğer sınıf üyelerinde olduğu gibi direk olarak türemiş sınıflara geçmektedir. Ancak kalıtım alan sınıfların gelen özellikleri değiştirmek istedikleri taktirde virtual tanımlaması yapılabilinir 1. class BaseVirtualProperty public int X get return 10; set Console.WriteLine("Temel Sınıftan kalıtım Yolu ile geçmiştir"); public virtual int Y get return 20; set Console.WriteLine("Temel Sınıfta Y değeri 20 dir"); class DerivedVirtualProperty:BaseVirtualProperty public override int Y get 1 Propertylerin static, abstract olması ve arayüzlerde tanımlanması ileri konularda işlenecektir. 9

return 100; set Console.WriteLine("Türemiş Sınıfta Y değeri 100 dür"); class Program DerivedVirtualProperty dvp = new DerivedVirtualProperty(); Console.WriteLine(dvp.X); Console.WriteLine(dvp.Y); 10

Örnek: Bir önceki derste yaptığımız OrnekCalismaAlanHesaplama adlı uygulamanın düzenlenmesi. Dışarıdan girilen yarıçap ve yükseklik değerlerinin negatif olması durumu engellenmesi gerekmektedir. SekilBase Sınıfının aşağıdaki şekilde düzenleyelim. class SekilBase private double r; protected double R get return r; set if (value < 0) r = 0; else r = value; private double h; protected double H get return h; set if (value < 0) h = 0; r = 0; else h = value; public SekilBase() public SekilBase(double r, double h) this.r = r; this.h = h; protected virtual double AlanHesapla() return 0; public void EkranaYazdir() 11

Console.WriteLine(this.GetType().Name + " Alanı = 0:F2", this.alanhesapla()); class Nokta : SekilBase class Daire : SekilBase public Daire(double r) : base(r, 0) protected override double AlanHesapla() return Math.PI * R * R; class Kure : SekilBase public Kure(double r) : base(r, 0) protected override double AlanHesapla() return 4 * Math.PI * R * R; class Silindir : SekilBase public Silindir(double r, double h) : base(r, h) protected override double AlanHesapla() 12

return 2 * Math.PI * R * R + 2 * Math.PI * R * H; class Dikdortgen : SekilBase public Dikdortgen(double en, double boy) : base(en, boy) protected override double AlanHesapla() return R * H; class GenelSinif private double yaricap; private double yukseklik; public GenelSinif() this.ekranoku(); this.nesneolustur(); private void EkranOku() Console.Write("Yarıçap : "); yaricap = Convert.ToDouble(Console.ReadLine()); Console.Write("Yukselik: "); yukseklik = Convert.ToDouble(Console.ReadLine()); private void NesneOlustur() Nokta yeninokta = new Nokta(); Daire yenidaire = new Daire(yariCap); Kure yenikure = new Kure(yariCap); Silindir yenisilindir = new Silindir(yariCap, yukseklik); Dikdortgen yenidikdortgen = new Dikdortgen(yariCap, yukseklik); // Dikdörtgen // Ekranda Gösterilmesi yeninokta.ekranayazdir(); yenidaire.ekranayazdir(); yenikure.ekranayazdir(); yenisilindir.ekranayazdir(); yenidikdortgen.ekranayazdir(); //Dikdörtgen 13

class Program GenelSinif gs = new GenelSinif(); Programımızı çalıştırdığımızda; 14