# Java'da Sınıf Kavramı (Class) Sınıflar aslında nesnelere ait özelliklerin ve fonksiyonlarının bir araya getirilip bir veri tipi olarak tanımlandıÄı Åablonlardır. Sınıf tanımlar aÅaÄıdaki yapıya uygun olarak tanımlarız. ````java class class_name{ deÄiÅkenler; metotlar; } ```` Java'da sınıf tanımlamak için " **class**" anahtar kelimesi kullanılır. Bu anahtar kelimeden sonra yazılım sınıfa bir isim belirler. Bu isim tamamen geliÅtiricinin tercihine baÄlıdır. Fakat, sınıf isimlerinin ilk harfinin büyük olmasına lütfen özen gösterelim. Sınıf ismini de verdikten sonra "{" iÅareti ile sınıfa ait kapsamı yani kod bloÄunu oluÅtururuz. "}" parantezi ile de sınıfa ait kapsamı kapatırız. Böylece, sınıfımız için yazacaÄımız kodlar "{}" arasında kalan alanda yazılacaktır. Bu da sınıfın kapsamını ifade eder. Sınıf kod bloÄunu açtıktan sonra bu kod bloÄu için deÄiÅkenleri ve fonksiyonları yazarız. Unutmayınız ki fonksiyonların da kendilerine ait kod blokları, yani kapsamları vardır. Onları da "{}" ile belirtiriz. Not: Java'da Sınıf'lar ve Metotlar (Fonksiyonlar) kodun yeniden kullanılabilirliÄi için kullanılır. Derste yaptıÄımız örneklerle de aynı kod bloÄunu birden fazla kere kopyalayıp farklı yerlerde kullanmaya çalıÅıyorsak bunu fonksiyona çekmek gerekiyor. Böylece, yeniden kullanılabilirliÄi arttırmıŠoluyoruz. Not: Aynı Åekilde bir nesneye ait fonksiyonları ve deÄiÅkenleri bir araya toplayıp bir veri tipi oluÅturarak yeniden kullanılabilir bir kod bloÄu oluÅturmuÅ oluyoruz. Ãrnek bir sınıfı aÅaÄıda inceleyelim. ````java // class anahtar kelimesi ile bir sınıf tanımladıÄımızı söylüyoruz. // ardından sınıfımıza bir isim veriyoruz. Bu örnekte sınıf ismimiz "DatabaseConnection" class DatabaseConnection { // sınıfın kod bloÄunun baÅladıÄı nokta // Veritabanı baÄlantısı için kullanılan deÄiÅkenler // url deÄiÅkeni ile veritabanı sunucusuna hangi adres üzerinden eriÅeceÄimizi tutarız. // name deÄiÅkeni ile hangi veritabanına baÄlanacaÄımızı tutuyoruz. // portNo deÄiÅkeni ile veritabanı sunucusuna hangi port üzerinden baÄlanacaÄımızı tutarız. private String url; private String name; private int portNo; // Fonksiyonlar (Metotlar yani) aÅaÄıdaki yapıda tanımlanırlar. // public/private/protected gibi 3 eriÅim belirtecinden biri seçilir. Bu örnekte public demiÅiz ki dıÅarıdan herkes çaÄırabilsin diye. // DeÄer döndüren bir fonksiyon ise dönüŠtipi verilir. DeÄer döndürmüyorsa void olarak belirtilir. Bu örnekte boolean olarak belirtilmiÅ. // Ardından () parantez ile fonksiyonun hangi girdileri alabileceÄi belirtilir. Bu örnekte parametresiz fonksiyon olduÄu için () Åeklinde tanımlandı. // Ardından {} süslü parantezler ile fonksiyonun kod bloÄu açılır ve fonksiyon ile ilgili kodlar bu aralıÄın içine yazılır. public boolean open() { // Veri tabanı baÄlantısı açar. // Bu fonksiyon boolean tipinde bir deÄer döndürür. // { } ile fonksiyonun kapsamını yani kod bloÄunu tanımladık. Bu fonksiyon ile ilgili kodlar bu kapsam içine yazılacaktır. // EÄer baÄlantı iÅlemi baÅarılı ise true deÄer döndürecektir. return true; } // AÅaÄıdaki fonksiyon veritabanı ile ilgili özet bilgileri ekrana döker. // DeÄer döndürmediÄi için void tipindedir. // () içinde "boolean detailedInfo" isminde bir girdi verdiÄimiz için parametre alan bir fonksiyondur. public void showDatabaseInfo(boolean detailedInfo) { } } // sınıfın kod bloÄunun bittiÄi nokta ```` Yukarıda sınıf ve fonksiyon tanımlamalarına detaylıca yer verilmiÅtir. Sınıflar nesneler oluÅturabilmek için yazılım dünyasında oluÅturulmuÅ Åablonladır. Bu Åablon nesne ile ilgili modellenecek tüm özellikleri ve davranıÅları bir taslak halinde kodlanmasını saÄlar. Böylece, tanımlanmıŠbir sınıftan binlerce nesne oluÅturabiliriz. ÃrneÄin: Veritabanına baÄlantıyı saÄlayan bir sınıf tasarladıÄımızı hayal edelim. Bu durumda sınıfa bazı deÄiÅkenler tanımlamak gerekecektir. ÃrneÄin: baÄlanılacak veritabanı ismi, veritabanı sunucusunun URL'i, veritabanı baÄlantısı için kullanıcı adı ve Åifre gibi özellikler deÄiÅkenler olarak tanımlanmalıdır. Ãünkü bunlar veritabanı baÄlantısı için gerekli olan özellikleri ifade eder. Aynı zamanda veritabanı baÄlantısı için çeÅitli metotlarda gereklidir. BaÄlantı açmak, baÄlantı kapatmak gibi eylemler metotları ifade eder.