Paylaşım , Takip İçin
Program Kontrol İfadeleri
- Sınıf Temelleri (class)
- Nesneler (objects)
- new Operatörü
- Nokta ( . ) operatörü
- Metotlar (Methods)
- Metotların Aşırı Yüklenmesi (Overloading)
- Yapılandırıcı Metotlar(Constructors)
- Statik Değişkenler (static)
- Statik Metotlar
Sınıf Nedir?
- Bir sınıf, ortak özellikleri ve davranışları olan nesnelerin söz konusu ortak özelliklerini ve ortak davranışlarını barındıran soyut bir kavramdır.
- Nesnenin yaratılması için nesnenin bir plana ihtiyacı vardır. Bu plana sınıf (class) denir.
- Yani sınıf (class) nesnelerin şeklini ve doğasını tanımlar.
- Sınıfların asıl kullanım amacı, verileri tek tek değişkenler içerisinde tutmak yerine birbirleri ile ilişkisi olan verileri bir araya getirmek ve bunlara tek bir referans ile erişim sağlamaktır.
Sınıf Kavramı
- Sınıflar C’deki gibi stuct yapı elemanlarına benzerler.
- Sınıfların struct yapısından temel farkı ve üstünlüğü içerisinde metot tanımlanabilmesidir.
- Sınıflar detaylı bir veri tipi gibi düşünülebilir.
- Sınıflar yaratılan nesne için bir şablondur(template) ve bir nesne bu sınıfın örneğidir(instance).
- Java’da sınıf tanımı class anahtar sözcüğü ile bildirilir.
Sınıf Yapısı
public class sinifIsimi {
tip uyeDegisken1;
tip uyeDegisken2;
public constractor (parametreler) {
//Metodun Gövdesi
}
tip metodIsmi2(parametreler) {
//Metodun Gövdesi
}
}
- Sınıflar genel haliyle 4 ana parçadan oluşurlar:
- Üye Değişkenler (instance variables): Sınıfta tutulacak bilginin depolandığı sınıfa özel değişkenlerdir.
- Yapılandırıcı Metotlar (Constructors): Genellkle sınıf ilk defa oluşturulurken new operatörü ile çağrılan metotlardır.
- Üye Değişkenlere erişim sağlayan metotlar (Getter/Setter): Bu metotlar genelde public olarak tanımlanır ve private olarak tanımlanan üye değişkenlere dışarıdan erişimi sağlar.
- Genel Metotlar(Metods): Sınıf içerisindeki veriyi kullanarak çeşitli çıktılar üreten metotlardır.
Örnek
public class Box{
double width;
double height;
double depth;
}
- Burda Box adında bir sınıf ve bu sınıfa ait double tipinde 3 adet üye değişken tanımladık.
- Şu anda Box sınıfı herhangi bir metot içermiyor.
- Artık bu sınıfa ait bir nesne yaratabiliriz.
Nesneler
- Bir sınıf tanımlandıktan sonra aslında yeni bir veri tipi oluşturmuş oluruz.
- Java’da oluşturulan bu yeni veri tipine ait değişkene nesne (object) adı verilir.
- Bir uygulama çalışırken bir sınıfa ait değişik sayılarda örnek (yani nesne) bulunabilir.
- Herhangi bir anda o sınıfa ait hiç nesne olmayabileceği gibi bir yada daha fazla sayıda nesne de olabilir.
Oluşturulması
- Örneğin Box sınıfından bir nesne yaratalım:
Box kutu= new Box();
- Yukarıdaki ifade ile Box sınıfından yeni bir nesne yaratmış olduk.
- Nesneleri aşağıdaki şekilde de tanımlayabilirsiniz:
Box myBox;
myBox=new Box();
- Artık tanımladığımız nesnelerin üye değişkenlerine erişebiliriz:
kutu.width=10.2;
myBox.depth=2.0;
new Operatörü
- Bu operatör bir sınıf adı ile birlikte kullanılır.
- Bellekte ilgili sınıfa ait yeni bir nesne oluşturulmasını sağlar.
- Operatörün kullanımı aşağıdaki gibidir.
Box kutu= new Box(); //Birinci Yöntem
Box myBox;
myBox=new Box(); //ikinici Yöntem
- Bir nesne eğer new operatörü kullanılmadan yaratılırsa varsayılan olarak null değeri alır.
- Eğer nesneye erişilmeye çalışılırsa NullPointerExecption istinası üretilir.
( . ) Nokta Operatörü
- Nesneler tanımlandıktan sonra nesnelerin public veya protected olarak tanımlanan üye değişken ve metotlarına erişim sağlamak için nokta operatörü kullanılır.
Box kutu= new Box();
kutu.height=112;
kutu.width=10.2;
kutu.depth=96;
double hacim=kutu.volume();
System.out.println("Kutunun Hacmi="+hacim);
public, private ve protected
- public: Bu anahtar kelimeye sahip üye değişkenler ve metotlar diğer bütün değişken ve sınıflar tarafından erişilebilir hale gelirler.
- private: Bu anahtar kelime önüne getirildiği üye değişken yada metodu dışarıdaki sınıflara görnmez kılmak için kullanılır. Yani bu metot ve değişkenler sadece sınıf içerisinde kullanılabilir.
- protected: Bu anahtar kelime bir üye değişken yada metoda sadece tanımlandığı sınıf ile aynı paket içerisinde olan sınıflar tarafından erişim sağlar. Diğer sınıflar ise bu üye değişken ve metotlara erişemezler.
Örnek
public class Box{
double width;
double height;
public double depth;
private String size;
protected String type;
}
- Eğer herhangi bir anahtar kelime yazılmazsa üye değişken varsayılan olarak public anahtar kelimesi varmış gibi tanımlanır.
Nesne Referans Değişkenine Atama
- Bir nesne referans değişkenini başka bir nesne referans değişkenine atarsanız ne olur?
Box myBox2;
myBox2=myBox;
myBox.width=12;
System.out.println(myBox2.width);- Burada size yeni bir nesne değişkeni yaratılıyormuş gibi gelebilir fakat bu iki nesne referans değişkenide hafızada aynı yeri gösterirler.
Metotlar
- Bir metot kendisine verilen parametreler üzerinde çeşitli işlemler gerçekleştirerek bir sonuç üretir.
- Metotları C’deki fonksiyonlara benzetebilirsiniz.
- Java’da metotların genel yapısına bakacak olursak:
Anahtar_kelime DönüşTipi MetotAdı(Parametreler) {
//Metot İçeriği
}
- Şimdi metodların bileşenlerine tek tek bakalım.
Metot Bileşenleri
- Anahtar Kelimeler: Bu alan zorunlu değildir. Erişim seviyelerini belirleyen public, private, protected ve static kelimelerini alabilir.
- Dönüş Tipi: Genellikle metotlar bir sonuç döndürürler. Sonuç döndürme işlemi return ifadesi ile beraber kullanılır.
- Metot adı: Metoda dışarıdan erişim sağlayabilmek için kullanılan isimdir.
- Metot Parametreleri: Bu alan metodun yapacağı işler için sağlanacak parametreleri belirler.Parametreler parantez içinde tanımlanırlar.
Box Sınıfımıza iki Metot Ekleyelim
public class Box{
double width;
double height;
public double depth;
public double volume() {
return width*height*depth;
}
void showResult() {
double vol=this.volume();
System.out.println(vol);
}
Parametre Alan Metot Örneği
public class Box{
int multiply(int num1, int num2) {
return num1 * num2;
}
}
…
int i=kutu.multiply(12,7);
System.out.println(i);
Yapılandırıcı Metotlar(Constructors)
- Bu metotlar new anahtar kelimesi ile yeni bir sınıf üretildiğinde otomatik olarak çalışırlar.
- Bu metotların adı içinde bulunduğu sınıf ile aynı olmalıdır.
- Yapılandırıcı metodu diğerlerinden ayırabilmek için adına bakmak yeterlidir.
- Bazı yapılandırıcı metotlar parametre alabilirler.
Örnek
public class Box{
private double width;
private double height;
private double depth;
public Box() {
width=0.0;height=0.0;depth=0.0;
}
public Box(double w,double h,double d){
width=w;
height=h;
depth=d;
}
static Üye Değişken Tanımlama
- Kimi zaman nesne içerisinde bazı değişkenlerin değerinin o sınıftan yaratılan bütün nesneler için aynı kalmasını isteriz.
- Bu durumda sınıf içerisinde tanımladığımız üye değişkenimize herhangi bir nesne yaratmaksızın erişebiliriz.
- static metotlar ve değişkenler tanımlandıkları sınıfın dışında herhangi bir nesneden bağımsız olarak o sınıfın yen bir nesnesi oluşturulmadan direkt sınıfın adı referans gösterilerek çağrılabilir.
- static olarak bildirilen üye değişkenler zorunlu olarak global olurlar.
- Kendi sınıfından nesneler yaratıldığında static değişkenin bir kopyası çıkarılmaz.
- Bunun yerine sınıfın bütün nesneleri aynı static değişkeni paylaşır.
Örnek
class values{
public static int staticNum;
public int num;
public static final double pi=3.14;
}
public class staticVariables {
public static void main(String[] args) {
values val1=new values();
values val2=new values();
val1.staticNum=5;
val2.num=9;
System.out.println("static="+val1.staticNum+" normal="+val1.num);
System.out.println("static="+val2.staticNum+" normal="+val2.num);
values.staticNum=11;
System.out.println("val1.static="+val1.staticNum+" val2.static="+val2.staticNum);
System.out.println("Sabitimiz="+values.pi);
}
}
Çıktısı
——————————————
static=5 normal=0
static=5 normal=9
val1.static=11 val2.static=11
Sabitimiz=3.14
static Metotlar
- Bir metot tanımlanırken metot adından önce static anahtar kelimesi kullanılırsa bu metot statik metot olarak adlandırılır.
- Statik metotlar tanımlandığı sınıfın dışında herhangi bir nesneden bağımsız olarak o sınıfın yen bir nesnesi oluşturulmadan direkt sınıfın adı referans gösterilerek çağrılabilir.
- Statik metotlar sadece statik veriye erişebilirler.
- Sadece diğer statik metotları çağırabilirler.
- this ve süper anahtar sözcüklerine atıf yapamazlar.
Örnek
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Date;
class timeShow{
public static String dateTime(Timestamp ts) {
Date date=new Date(ts.getTime());
String format="dd/MM/YYYY - [hh:mm]";
SimpleDateFormat sdf=new SimpleDateFormat(format);
return sdf.format(date);
}
}
public class staticExp {
public static void main(String[] args) {
Date dt=new Date();
Timestamp ts=new Timestamp(dt.getTime());
String result=timeShow.dateTime(ts); //Nesne yaratmadan metodu kullandık
System.out.println(ts);
System.out.println(result);
}
}
Çıktısı
—————————-
2017-10-14 23:01:30.882
14/10/2017 – [11:01]
final Anahtar Kelimesi
- Bir değişkenin tanımlanması final anahtar kelimesi kullanılarak tanımlandığı zaman o değişkenin içeriği değiştirilemez.
- Değeri değişmeyen sabit değişkenler tanımlamak için static final anahtar kelimeleri birlikte kullanılır.
- final anahtar kelimesi kullanılarak yaratılan tüm değişkenler bildirildiği zaman mutlaka ilk değer almalıdırlar.
- final ile tanımlanan değişkenlerin değeri bir daha değiştirilemez.
Paylaşım , Takip İçin