public static int Toplam int x, int y



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

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

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

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

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

BİL-141 Bilgisayar Programlama I (Java)

NESNEYE DAYALI PROGRAMLAMA 9. HAFTA UYGULAMA DERSİ

Ders 8 Konu Özeti ve Problemler

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

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

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

Nesneye Dayalı Programlama

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;

BMH-303 Nesneye Yönelik Programlama

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

NESNEYE YÖNELİK PROGRAMLAMA

Nesne Yönelimli Programlama ve Kalıtım

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

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

Programlama Dilleri 3

BTEP243 Ders 3. class Yazım Kuralı:

Lambda İfadeleri (Lambda Expressions)

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

YZM 2105 Nesneye Yönelik Programlama

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

C++ Dersi: Nesne Tabanlı Programlama

C de Detaylı Üs Alma Programı. C# Dilinde Metot Tanımlama ve Yazdırma

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

JAVADA METOTLAR. BMÜ-111 Algoritma ve Programlama. Yrd. Doç. Dr. İlhan AYDIN

Sunum İçeriği. Programlamaya Giriş

Ders 8: Metotlar. barisgokce.com

Arayüz soyut metotların oluşturduğu bir koleksyondur. Bir sınıf arayüzü çalıştırırken arayüzün sahip olduğu soyut metotları da miras alır.

Programlama Dilleri III 1

C# Çalışma Örnekleri

Dr. Fatih AY Tel:

Fonksiyonlar (Altprogram)

Java 2 Standart Edition SDK Kurulum ve Java ya Giriş

Nesneye Dayalı Programlama

MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş

HSancak Nesne Tabanlı Programlama I Ders Notları

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

Nesne Yönelimli Programlama

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

C++ Dersi: Nesne Tabanlı Programlama

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

Java ile Nesneye Yönelik Programlama (Object Oriented Programming)

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

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-12 Fonksiyonlar. Yrd. Doç. Dr. Ümit ATİLA

YZM 2105 Nesneye Yönelik Programlama

Programlama Dilleri 3

Bölüm 10 Statik ve Anlık Öğeler

HSancak Nesne Tabanlı Programlama I Ders Notları

Akış Konrol Mekanizmaları

Programlama Dilleri 3

HSancak Nesne Tabanlı Programlama I Ders Notları

Nesneye Dayalı Programlama

Hafta 13 Fonksiyonlar

MOBIL UYGULAMA GELIŞTIRME

YZM 2105 Nesneye Yönelik Programlama

Nesneye Yönelik Programlama (OOP) 7.Hafta

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

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

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

C# Metotlar ve Metot Tanımlama

C++ Dersi: Nesne Tabanlı Programlama

BİL-142 Bilgisayar Programlama II

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

Nesne Yönelimli Programlama

YZM 2105 Nesneye Yönelik Programlama

Şablon Türler (Generics)

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 7

NESNE TABANLI PROGRAMLAMA Final Sınavı Cevapları

C Programlama Dilininin Basit Yapıları

11- FONKSİYONLAR (FUNCTIONS)

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:

Nesne Yönelimli Programlama

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

// hataları işaret eden referans

C++ Dersi: Nesne Tabanlı Programlama

C# Programlama Dili. İlk programımız Tür dönüşümü Yorum ekleme Operatörler

Dizi türündeki referanslar, dizi nesnelerine bağlanmaktadır. Dizi referansları tanımlamak bu dizinin hemen kullanılacağı anlamına gelmez...

Göstericiler (Pointers)

Dr. Fatih AY Tel: fatihay@fatihay.net

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

YZM 2105 Nesneye Yönelik Programlama

BOĞAZİÇİ ÜNİVERSİTESİ UNVAN DEĞİŞİKLİĞİ SINAVI PROGRAMCI

ÜNİTE. NESNE TABANLI PROGRAMLAMA I Okt. Mustafa AKBUĞA İÇİNDEKİLER HEDEFLER METOTLAR

C# Dilinde Temel Veri Türleri

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

YZM 2105 Nesneye Yönelik Programlama

/ C Bilgisayar Programlama Final Sınavı Test Soruları. Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : , 60 dak.

Nesneye Dayalı Programlama

İçerik. Temel Kavramlar. Nesne Nedir? 1. Nesne : Örnek. Nesne Nedir? 2. Geçen hafta: Bu hafta: BBS-515 Nesneye Yönelik Programlama

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

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.

Bahar. BM 211 Programlama Dilleri 3 1

Temel Kavramlar BBS-515 Nesneye Yönelik Programlama

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

Programlama Dillerinde Kullanılan Veri Tipleri

Dizi ( Array ) ve Dizgi ( String )

Transkript:

static Kavramı 1 İçinde bulunduğu sınıftan nesne oluşturulmadan veya hiç bir nesneye referans olmadan kullanılabilen üyeler static olarak nitelendirilir. Metotlar ve alanlar static olarak tanımlanabilir. static Metodlar static olma durumunun en bilinen örneği Main() metodudur. Main(), herhangi bir nesne oluşturulmadan önce çağırılması gerektiği için static olarak tanımlanmıştır. Başka bir deyişle de bir nesne metodun üreteceği sonucu etkilemeyecek ise o metot static olarak tanımlanır. Diğer adı ile sabit metotlar olarak da bilinirler. Static olarak tanımlanan bir metoda program çalıştığı sürece erişilir, böylece sadece bir metot ile birden çok nesne çağırılır. Bu metotlar bir nesne ile var olan metotlar değil, bir sınıfın kendisinde tanımlanmış olan metotlardır. Örnek verirsek Math sınıfının Pow metodu bir statik metottur. Ve bu metot ile bir değerin üssünü yani üssel ifade değerini hesaplayabiliriz. Bir metodu static olarak tanımlayabilmek için metot isminin hemen önünde static deyimini kullanırız. Oluşturulan veya oluşturulmuş olan her bir statik metodu ilgili sınıfın adının ardından nokta (.) kullanarak metot adını belirterek kullanabiliriz. Yani SınıfAdı.MetotAdı(ilgili parametre(ler)) şeklinde kullanılır, örnek verirsek; Math.Sqrt( 2500.0 ) Bunu kullanarak ilgili değerin sonucunu 50 buluruz. Burada kullanmış olduğumuz Math sınıfının içinde yer alan static Sqrt metodudur. Bu metot ile ilgili argümanın karekök değerini buluruz. class Matematik public static int Toplamint x, int y int z x y; return z; Görüleceği üzere herhangi bir nesneye bağımlı olmadan bu sınıfı ve ilgili static metodu kullanabiliyoruz. Math sınıfında yer alan tüm metotlar statik metottur. Dolayısı ile hepsinin kullanımı üstte görüldüğü gibidir, yani önce Math sınıfı yazılır sonra nokta (.) ve daha sonra da ilgili metodun adı gelir. Örnek olarak mesela sık sık kullanmış olduğumuz Console.WriteLine(), Consol.Write() bunlarda static metotlardır. Her ikisi de Console sınıfında yer alan static metotlardır. class Program static void Mainstring args int sonuc Matematik.Toplam3, 5; Console.WriteLinesonuc; Yukarıdaki örnekte "Matematik" sınıfı altında "Toplam()" isimli static metodu oluşturuldu ve program sınıfının static Main() metoduna verilebilecek her tamsayı x ve y değerleri için toplama işlemi gerçekleşir. Böylece static olarak tanımlanmış sınıf metotlarına static olmayan sınıf üyelerininde 1 Bu başlık altındaki yazılar http://bidb.itu.edu.tr/seyirdefteri, http://onursalkaya.blogspot.com.tr, http://www.ismailgursoy.com.tr/ internet adreslerinden yararlanılarak derlenmiştir.

erişebileceği görülür. Aşağıdaki örnekte ise static olmayarak tanımlanın bir metodun static "Toplam()" metoduna ulaşabildiği görülür. public int Toplamlarint x, int y, int m int sonuc 0; for int i 0; i m; i sonuc Toplamx, y; return sonuc; static bir metot olan "Toplam()" metodundan static olmayan Toplamlar metoduna erişilmek istenirse "An object reference is required for the nonstatic field, method, or property StaticKavrami.Matematik.Toplamlar(int, int, int)" hatası ile karşılaşılır. static Alanlar Bir sınıf içerisinde bulunan alanlarda static olarak tanımlanabilir. Eğerstatic kavramı yok ise sınıftan nesne oluşturulması gerekir. Bir değişken static ise sınıfın tamamıyla ilgilidir ve buna "sınıf alanı" adı verilir; static değil ise bir nesneyle ilgilidir, buna da "nesne alanı" adı verilir. Sınıf alanları, nesneye değil sınıfa ait bilgiler içerir. Ayrıca, sınıf alanlarından oluşturulan her nesne için bellekte bir tane sınıf alanı vardır ve her şekilde ona erişilir. Aşağıdaki örnekte "Matematik" sınıfına ait y ve z nesne örnekleri oluşturulmuştur ancak bunların değerleri static olan x değerine eşittir. x değişkenine de metotta olduğu gibi SınıfAdı.DeğişkenAdı şeklinde ulaşıldığı görülür. static alanların bir diğer özelliği ise çalışma zamanında değerlerinin değiştirilebiliyor olmasıdır. Bunun için aşağıdaki örnek uygulamada "xdeğistir()" adındaki metot kullanılmştır. class Matematik public static double x5.5; public void xdegistirint y x y; class Program static void Mainstring args Matematik y new Matematik; Console.WriteLineMatematik.x; Matematik z new Matematik; Console.WriteLineMatematik.x; z.xdegistir4; Matematik t new Matematik; Console.WriteLineMatematik.x;

Bu örneğin çıktısında y ve z isimli nesnelerinin 5.5 değerini aldıklarını, z değeri üzerinden "xdegistir()" metodu çağırıldıktan sonra, oluşturulan t isimli nesne örneğinin static x değişkeninin yeni değeri olan 4 ü aldığı görülür. Yeni bir metot çağrısı ile static x değişkeninin değeri değiştirilene kadar oluşturulan her nesne örneği 4 değerini alır. static Yapıcı Metod (constructors) Static yapıcı metodu çoğunlukla bir sınıfın static değişkenlerine ilk nesne örneği oluşturulduğunda bir kereliğine değer atmak için kullanılır. public class Dikdortgen public static int kontrolalani 20; static Dikdortgen kontrolalani 35; static Sınıflar Bir sınıf static olarak tanımlanıyosa, içerisindeki bütün üyeler static olarak tanımlanmak zorundadır. Amaç tüm üyeleri static olmaya zorlamaktır. Static sınıfların özellikleri aşağıdaki gibidir: -C# 2.0 ile birlikte static anahtar sözcüğü class'lara da uygulanabilir bir hale geldi. -Bir class'a static anahtar sözcüğü uygulandığından içindeki tüm üyeleri static olmaya zorlamış olur. -Tek bir özel nesne örneği, sınıfın kullanıldığı anda ram'in Static bölgesine çıkar. -Static sınıflar new ile örneklenemezler. Dolayısıyla heap'te nesne örnekleri bulunmaz. public static class Kare public static double kenar; public static double Cevre return kenar * 4; public static double Alan return kenar * kenar; public class Program public static void Main Kare.Kenar 36.84; Console.WriteLine"Kare Özellikleri"; Console.Write"Kenar: "; Console.WriteLineKare.kenar; Console.Write"Cevre: "; Console.WriteLineKare.Cevre;

Console.Write"Alan: "; Console.WriteLineKare.Alan; sealed Kavramı 2 Nesne yönelimli programlamanın temel felsefelerinden biri de kalıtımdır. sealed, sınıflara ve üyelere(metot ve property) uygulanabilen bir anahtar sözcüktür. Anlamı; kapalı, mühürlü şeklinde çevirilebilir. Sınıflar için kalıtımı, üyeler için ise override edilmeyi önler. Basit örnekler üzerinden inceleme yapalım. Birbirinden türetilen A,B ve C sınıfları olsun. class Program : C static void Mainstring args public class A public string AProperty get; set; public class B : A public string BProperty get; set; public class C : B public string CProperty get; set; Main metodu içerisinde Program tipinden bir nesne örneklediğimizde, Program sınıfının C sınıfından kalıtılması sebebiyle ilgili property lere erişebildiğimizi görürüz. Zaten kalıtımın temel mantıklarından birisi de budur. 2 Bu başlık altındaki yazılar http://onursalkaya.blogspot.com.tr/ internet adresinden alınmıştır.

Projeyi yukarıdaki hali ile derlediğimizde herhangi bir hata almayacağız. Şimdi de amacımız, C sınıfından yapılacak bir kalıtımı önlemek. Bunun için C sınıfına sealed anahtar sözcüğünü uygulamamız yeterli olacaktır. public sealed class C : B public string CProperty get; set; sealed ile, C sınıfından herhangi bir kalıtım yapılması halinde derleme zamanı hatası alınmasını sağladık. Son hali ile projemizi derlediğimizde aşağıdaki gibi bir hata mesajı ile karşılaşacağız. 'sealedkeyword.program': cannot derive from sealed type 'sealedkeyword.c' Program sınıfının, sealed olarak işaretlenmiş olan C sınıfından kalıtamayacağı mesajı aldık. Dolayısı ile artık C sınıfından kalıtım yapamayacağız. Şimdi de A sınıfı içerisine virtual bir metot ekleyelim. Daha sonra da B sınıfında bu metodu override edelim. public class A public virtual void Test Console.WriteLine"A sınıfındaki Test metodu çalıştı"; public class B : A public override void Test Console.WriteLine"B sınıfındaki Test metodu çalıştı"; Program sınıfını B sınıfından kalıtalım ve Test metodunu override etmeye çalışalım.

Görüldüğü gibi Test metodu da override edilebilir bir metot olarak karşımıza çıktı. class Program : B public override void Test Console.WriteLine"Program sınıfındaki Test metodu çalıştı"; static void Mainstring args Programı derlediğimizde hata ile karşılaşmayacağız. Şimdi de B sınıfına giderek Test metodumuzu sealed olarak işaretleyelim. public class A public virtual void Test Console.WriteLine"A sınıfındaki Test metodu çalıştı"; public class B : A public sealed override void Test Console.WriteLine"B sınıfındaki Test metodu çalıştı"; Tekrar program sınıfına dönelim ve Test metodunu override etmeyi deneyelim. Artık override edilebilecek üyeler listesinde Test metodunu göremeyeceğiz. Sebebi, sealed ile işaretlenmiş olması, yani artık override edilemeyecek olmasıdır. Derleyiciden yardım almayarak manuel olarak override ettiğimizde ise derleyici tarafından bir hata mesajı alacağız. class Program : B

public override void Test Console.WriteLine"Program sınıfındaki Test metodu çalıştı"; static void Mainstring args Programı derlediğimizde alacağımız hata mesajı aşağıdaki gibi olacaktır. 'sealedkeyword.program.test': cannot override inherited member 'sealedkeyword.b.test' because it is sealed Framework içerisinden örnek vermek gerekirse; string tipi de sealed olarak işaretlenmiştir. Yani string tipinden kalıtım yapamayız.