Nesneye Dayalı Programlama 1

Slides:



Advertisements
Benzer bir sunumlar
Sözcüksel Çözümleme/Analiz (Lexical Analysis)
Advertisements

Algoritma.  Algoritma, belirli bir görevi yerine getiren sonlu sayıdaki işlemler dizisidir.  Başka bir deyişle; bir sorunu çözebilmek için gerekli olan.
BULUT BİLİŞİM M. KÜRŞAT YILDIRIM İÇERİK  BULUT BİLİŞİM NEDİR?  BULUT BİLİŞİM ÖZELLİKLERİ  BULUT BİLİŞİM MİMARİ YAPISI  BULUT BİLİŞİM.
ROBOTS.TXT NEDIR? PAGERANK NEDIR, NASıL ÇALıŞıR PR değerinin sitelere etkisi 4. hafta.
BİLGİSAYAR PROGRAMLAMA Ders 11: İşaretçi (Pointer) Kullanımı Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği.
LINQ { C# 3.0 ve Language Integrated Query } MEHMET MECİT GÖK NO:
TC Windows Editörü DevC++. KURULUM PROGRAMIN KURULACAĞI YER BURADA BELİRLENİYOR.
TLS/SSL BILGI İŞLEM ORGANIZASYONU BERKE ÖMEROĞLU
OLASILIK TEOREMLERİ Permütasyon
AYNUR ŞİMŞEK İŞLETME YÖNETİMİ PROGRAMI ÖNÜNÜZDEN ÇEKİLİN.
 Cümlede, eylemin nesne alabilip alamamasına ya da öznenin, eylemde bildirilen işle ilgili olarak gösterdiği özelliğe eylem çatısı denir. Dolayısıyla,
Grafik ve Animasyon-II FLASH CS5 Öğr.Gör. Onur BULUT.
Sözsüz İletişimin Özellikleri
ARAYÜZLER(INTERFACE) Öğr.Gör. Murat ASLANYÜREK. ARAYÜZ KAVRAMINA GİRİŞ  Arayüzler, soyut sınıflara benzer. Ancak yapı olarak bazı yönleriyle farklılıklar.
7. Hafta İçeriği 1.Kalıtım (Inheritance) 2.Soyut sınıf (abstract class) 3.Sealed sınıf(sealed class) 4.Çok biçimlilik (polymorphism)polymorphism.
Öğretim İlke ve Yöntemleri: Öğrenme Stratejileri
2015 YGS ANALİZ KAMİL ÖZBAŞ Rehber Öğretmen YGS ANALİZİ (TÜRKÇE)  YGS’nin 40 soruluk Türkçe kısmında ağırlık; sözcük, cümle ve paragraf düzeyinde.
Bölüm 2 C Dilinin Temelleri
APP INVENTOR Emre ANLAR.
Kırkyama.
İÇİNDEKİLER NEGATİF ÜS ÜSSÜ SAYILARIN ÖZELLİKLERİ
JDK(Java  Development  Kit):  Java  kodlarını  derlemek  için gerekli  geliştirme  ortamını.
PROGRAMLAMAYA GİRİŞ VE ALGORİTMA
METOTLAR.
Ziyafet ve İkram Hizmetleri
Nesneye Dayalı Kavramlar Uygulama 1
BİLGİSAYAR PROGRAMLAMA Ders 11: İşaretçi (Pointer) Kullanımı
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 6: Sınıflar
STORAGE BÜŞRA KARADENİZ
Nesneye Dayalı Kavramlar Uygulama 2
KÜMELER HAZIRLAYAN : SELİM ACAR
Oğuz KIRÇİÇEK
PROBLEM ÇÖZME VE ALGORİTMALAR
Bölüm 6 Örgütsel Yönlendirme
3.hafta METODLAR.
Soyut veri tipleri ve kapsülleme kavramları
Globalpiyasa.com’da Firma Web Sitesi Nasıl Oluşturulur?
Meriç ÇETİN Pamukkale Üniversitesi Bilgisayar Mühendisliği Bölümü
NİŞANTAŞI ÜNİVERSİTESİ
Nesneye Dayalı Programlama 1
NİŞANTAŞI ÜNİVERSİTESİ
Doğrusal Mantık Yapısı İle Problem Çözme
Nesneye Dayalı Programlama 1
PROGRAMLAMAYA GİRİŞ VE ALGORİTMA
Evren-Örneklem, Örnekleme Yöntemleri 2
Kurucular(Yapıcılar), Yıkıcılar
NİŞANTAŞI ÜNİVERSİTESİ
ÖLÇME-DEĞERLENDİRME 1.DERS
Bilgisayar Bilimi Koşullu Durumlar.
NİŞANTAŞI ÜNİVERSİTESİ
Bilgisayar Bilimi Fonksiyon Yazma.
Değerler ve Değişkenler
İşlemciler.
DAHİLİ SINIFLAR(INNER CLASSES)
NİŞANTAŞI ÜNİVERSİTESİ
Nesneye Dayalı Programlama 1
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
BLM-111 PROGRAMLAMA DİLLERİ I Ders-10 Diziler
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
MTM216 GÖRSEL PROGRAMLAMA
MTM216 GÖRSEL PROGRAMLAMA
MTM216 GÖRSEL PROGRAMLAMA
Nesneye Dayalı Programlama 1
BLP 4210 PLATFORM BAĞIMSIZ PROGRAMLAMA
Algoritmalar ve Programlama II Ders 11: Kalıtım
Bilimsel Araştırma Yöntemleri
NİŞANTAŞI ÜNİVERSİTESİ
I. Hafta Dil Nedir? Dilin Kökeni
Sunum transkripti:

Nesneye Dayalı Programlama 1 Öğretim Görevlisi Alper Talha KARADENİZ

Örnek: Yamuğun alanını hesaplayan program Alan = (taban+tavan)/2*yukseklik İlk olarak Yamuk isimli bir sınıf (class) oluşturup koda dahil edilmelidir. Bir yamuk nesnesi tarif edebilmek için taban, tavan ve yükseliğe ihtiyaç vardır. Bu elemanları sınıfımıza dahil edelim. using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace YamukAlaniHesapla { class Yamuk double taban; double tavan; double yukseklik; }

Örnek: Yamuğun alanını hesaplayan program double türünden tanımladığımız taban, tavan, yüksekli bilgilerine eğer sınıf içersinde değer verirsek yamuk nesnesininden ziyade herseferinde ölçüleri belli bir yamuk tanımı yapılmış olur. Halbuki isteğimiz yamuk nesnesi her oluşumunda kendisini tarif edilebilen değerler alabilmesi olmalıdır. Dolayısıyla Yamuk sınıfının bir örneği (instance) oluştuktan sonra değer verilmelidir. Bir sınıfın bir örneğini oluşturma “Nesne” oluşturma denir ve new anahtar söcüğü ile olur ve aşağıdaki şekilde tanımlanır. Sinif_ismi degisken_ismi = new Sinif_ismi();

Örnek: Yamuğun alanını hesaplayan program using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace YamukAlaniHesapla { class Program static void Main(string[] args) Yamuk y = new Yamuk(); }

Örnek: Yamuğun alanını hesaplayan program Artık şablonumuz içersinde oluşturduğumuz alanlara değer verebiliriz. Bunun içinde “y” isimli nesne isminden sonra nokta(.) operatörü kullanılır. Bunun nedeni NDP özellikleri olan soyutlama (abstracttion) ve Sarmalamadır(encapsulation, bilgi saklama).

NDP Temel Kavram I: Sarmalama (Encapsulation) Kodu, veriyi veya nesneyi dış müdahalelerden koruyabilmek, oluşturulma amacı dahilinde kullanabilmek ve kullanılmayacağı yerlerde gösterimini engellemek için sarmalamaya ihtiyaç duyulmuştur. Bir sınıf içinde bulunan üyelerin, o sınıfı kullananlar tarafından erişilip, erişilemeyeceğini belirlemeye yarar. Örnek vermek gerekirse arabamızı çalıştırdığımızı düşünelim, biz sadece anahtarı yerine sokup çeviriyoruz değil mi, o anda arka planda olan hiç bir işleme karışmıyor ve müdahale edemiyoruz, yani ben anahtarı çevirince o motora giden enerjiyi açıyor, benzini pompalıyor ve buna benzer bir dizi işlemi sırayla yapıyor ama biz bununla ilgilenmiyoruz ve buna erişemiyoruz, işte bu mekanizma bizim erişmememiz için kapsüllenmiştir. Aksi taktirde kaputu açıp enerjiyi biz vermeye kalksaydık istenmeyen durumlarla karşılaşabilirdik. Bu çok uç bir örnek oldu farkındayım o yüzden daha basit bir örnek vermek gerekirse hepimiz cep telefonu kullanıyoruz, mesaj yazarken birini ararken tuşlara basıyoruz ama telefonun içindeki devrelere erişmemiz engellenmiştir. Bu işlemi yapabilmemiz için tuş takımı geliştirilmiştir. Yani bu devreler bir nevi kapsüllenmiştir. Sarmalama erişim denetleyicileri ile sağlanmaktadır.

Erişim Denetleyicileri (Access Modifiers) Diğer sınıfların veya sınıf gruplarının, sınıf yada sınıf üyelerine erişimi düzenleyen/kısıtlayan anahtar kelimelerdir. Pratikte yaygın olarak kullanılan anlayış, bir programcı bir sınıfı (class) oluşturur ve daha sonra diğer programcılar bu class’ı kendi kodlarında kullanırlar. Nesneye dayalı programlamanın önemli özelliklerinden bir tanesi olan encapsulation, sınıf değişkenlerine erişimi kısıtlayarak sınıfı oluşturan kişinin sınıfını korumasını sağlamaktadır. Aşağıdaki anahtar sözcükler, metot veya değişkenlere erişimi kısıtlamak veya izin vermek için kullanılırlar.

Erişim Denetleyicileri (Access Modifiers) Public :Bu şekilde tanımlanmış bir metot veya değişkene herhangi bir yerden ulaşmak mümkündür. Private :Bu şekilde tanımlanmış bir metot veya değişkene sadece sınıf içinden ulaşmak mümkündür. Protected :Bu şekilde tanımlanmış bir metot veya değişkene tanımlandıkları sınıftan veya bu sınıftan türetilmiş sınıflardan ulaşılabilir. Internal :Bu şekilde tanımlanmış bir metot veya değişkene tanımlandıkları sınıftan ve tanımlandıkları sınıfla aynı assembly’de olan sınıflardan ulaşmak mümkündür. (C#’a ait anahtar kelimedir.) Protected Internal :Bu şekilde tanımlanmış bir metot veya değişken hem protected hem de Internal özelliğindedir. (C#’a ait anahtar kelimedir.)

Erişim Denetleyicileri (Access Modifiers) Bu noktada unutlamaması gereken 5 husus vardır: 1. İşletim sistemleri bir tipin public, protected yada private olmasıyla ilgilenmez. Dolayısıyla hafıza takibi ile üyelerin değerlerine ulaşılabilmektedir. 2. Her programcı kendi yazdığı sınıfın güvenliğinden ve güvenirliğinden sorumludur. Eğer herhangi bir sınıf üyesinin private ile tanımlanması yeterli olduğu halde public ile dış dünyaya açılırsa programcılar bu üyeyi istedikleri gibi kullanılabilirler. Bu durum NDP’nin soyutlama prensibine aykırıdır. 3. Her dilin kabul ettiği default değerleri farklıdır. C# private, Java public olarak kabul etmektedir. Ancak programın okunabilirliği açısından erişim denetleyicilerin default değeri her ne olursa olsun belirtilmesi tavsiye edilmektedir. 4. Sınıf üyelerinden alanların public ile sınıf dışına açılması önerilmemektedir. (Sınıf üyelerinden özellikler konusunda açıklanacaktır.) 5. Bir sınıfın kendisinin private olarak tanımlanmasının hiç bir anlamı yoktur. Dolayısıyla derleyiciler hata vermektedir.

Örnek: Yamuğun alanını hesaplayan program Erişim denetleyicileri ile Yamuk sınıfını tekrar düzenlersek; public class Yamuk { public double taban; public double tavan; public double yukseklik; } class Program { static void Main(string[] args) Yamuk y = new Yamuk(); y.taban = 5; y.tavan = 6; y.yukseklik = 8; double alan = (y.taban + y.tavan) / 2 * y.yukseklik; Console.WriteLine(alan); Console.ReadLine();

Örnek: Yamuğun alanını hesaplayan program İkinci bir yamuk nesnemizi oluşturarak sonuçları ekrana yazdıralım. class Program { static void Main(string[] args) Yamuk x = new Yamuk(); x.taban = 3; x.tavan = 4; x.yukseklik = 5; double alan2 = (x.taban + x.tavan) / 2 * x.yukseklik; Console.WriteLine("X: " + alan2); }

Partial class Sadece C# ‘a özgü bir terimdir. Büyük projelerde sıklıkla kullanılan bir yöntemdir. Normalde herhangi bir sınıfı bir kez oluşturduğumuzda, aynı isim ile tekrar aynı sınıfı oluşturamayız veya herhangi bir şekilde başka bir yerde kullanamayız. Ancak Partial tanımlanan bir sınıfı başka bir yerde aynı isimle oluşturulabilir. Bu sayede bir sınıfta yapacağımız işlemleri ayrı ayrı yerlerde yapabiliriz. Kod derlenirken tek bir sınıfmış gibi beraber derlenmektedir. Büyük projelerde çalışırken özellikleri bir sınıfta, metotları başka bir sınıfta kullanmamızı ve kodun okunmasının kolaylaşmasını sağlar.

Partial class public partial class Urun { public int UrunId { get; set; } public string UrunAdi { get; set; } } Public int ekle(int Urunid, string Urunadi) { // komutlar public void yaz()

Kaynaklar Öğr. Gör. Özgür Çiftçi Nesne Tabanlı Programlama Ders Notları