Java OOP günlükleri - 1 OOP giriş

Bir çok dili temel ve orta seviyede biliyorum. Java da temel bildiğim dillerden bir tanesi. Java'yı yıllardır bilmeme rağmen OOP konusunda takılıp/kendimi çok geliştirmeden kaldım. Bu blog'da yeni öğrendiğim şeyleri kodları ile beraber sizlerle paylaşacağım.


Bu blog'a ilk olarak OOP mantığını azcık anlatarak başlayacağım. İnternet tanımından kaçınıp kendi tanımım ile anlatacağım. Eğer bu blog'u okuyan birileri var ise bu tanımlara bir de internetten bakmalarını öneriyorum.

OOP "nesne yönelimli program" anlamına gelir uzun yazımı ise "object oriented programming" dir. OOP temelde bir sınıf oluşturup o sınıfa bağlı nesneler üretebilmenizi ve o sınıfa ait fonksiyon ve değişkenleri kullanabilmenizi sağlar. Bu kavramı öğrenebilmek için Java da fonksiyonlara kadar temel bilginizin olması gerekmektedir.

Java OOP'de bilmemiz gereken kavramlar class(sınıf) ve nesne(obje)dir. OOP temelde bu iki kavramdan oluşur. Örnek vermek gerekirse;

Java:
class insan{

int boy;
int kilo;
String isim;

}
public class Furkaninkosesi {  //java programlarken içinde olduğunuz ana sınıf.
}

Yukarıdaki örnekte bir insan sınıfı tanımladım ve insana ait olan bazı değişkenler oluşturdum. Şu anda java da class(sınıf) oluştu. Bu sınıfa Ali, Veli, Mehmet, Ayşe.... gibi insanların tümü dahil olabilir fakat herhangi bir nesne şu anda bu sınıfa bağlı değil.

Bir insanı yani objeyi sınıfa bağlamak için java'da "new" kelimesini kullanırız. "new" ile tanımlanan class için RAM'de bir alan açılır. O nesneyi siz artık bir değişkenmiş gibi kullanabilirsiniz. Kullanımı şu şekildedir;

<Sınıf adı> <Nesne adı> = new <Sınıf adı();>

Örnek kullanım:

Java:
class insan{
    int boy;
    int kilo;
    String isim;
}
public class Furkaninkosesi {

public static void main(String[] args) {

  insan ali = new insan(); //"insan" sınıfına "ali" isimli birini bağladık.
  ali.boy = 175;  //"insan" sınıfından oluşturduğumuz "ali" nesnesine boy değişkeni girdik.
  System.out.println(ali.boy);

}
}

Program çıktı olarak 175 verdi. Bu işlemi diğer değişkenler için de hatta fonksiyonlar için de uygulayabiliriz. Örnek:

Java:
class insan{
    int boy;
    int kilo;
    String isim;

    int boyogrenme() { //boyu geri döndüren fonksiyon oluşturduk.
    
        return boy;
    
    }

}
public class Furkaninkosesi {

public static void main(String[] args) {

  insan ali = new insan();
  ali.boy = 175;
  System.out.println(ali.boyogrenme()); //boyogrenme fonksiyonunu çağırdık.
}
}
Program çıktı olarak 175 verdi.

OOP'de bir class(sınıf)'a birden fazla nesne bağlayabilirsiniz. Bu oluşan nesneler birbirinden bağımsızdır. OOP'nin genel kullanış amaçlarından biridir. Birden fazla nesne oluşturup aynı değişkenleri birbirinden bağımsız bir şekilde yönetebilirsiniz. Örnek:

Java:
class insan{

    int boy;
    int kilo;
    String isim;

}
public class Furkaninkosesi {
public static void main(String[] args) {

  insan ali = new insan();
  insan fatma = new insan();

  ali.boy = 175;
  fatma.boy = 170;

  System.out.println(ali.boy);
  System.out.println(fatma.boy);

}
}

Çıktı olarak sıra ile 175 170 verdi. RAM'de ikisi için de bağımsız ayrı bir alan oluştu ve değerler oraya kaydedildi.

Ek bir bilgi de vereyim C dillerinden birini temel düzeyde biliyorsanız, OOP yapısı "Şadi Evren SEKER" hocamın da dediği gibi C dillerindeki pointer yapısına benzer.

OOP girişi bu günlük bu kadar... Bundan sonraki konular için araştırma yapacağım ve öğrendiklerimi sizlere aktaracağım. Teşekkür ederim.
Yazar hakkında
Furkaninkosesi
Bilgisayar ile 2 yazılım ile 10 yaşında tanışan biri.

Yorumlar

Güzel bir blog olmuş. Farklı düşündüğüm şeyler biraz daha kafa oturdu. Konu ile alakasız bir sorum olacak cevaplarsanız sevinirim.

System.out.println( Integer.valueOf (Integer.MAX_VALUE) );

Yukarıda belirttiğim satırda integer olarak belirtilen en yüksek değeri integer olarak mı çeviriyor. Normalde string ve integer değerlerini çevirmek için kullanıyoruz. Bunun kullanım mantığını anlayamadım.
 
Güzel bir blog olmuş. Farklı düşündüğüm şeyler biraz daha kafa oturdu. Konu ile alakasız bir sorum olacak cevaplarsanız sevinirim.

System.out.println( Integer.valueOf (Integer.MAX_VALUE) );

Yukarıda belirttiğim satırda integer olarak belirtilen en yüksek değeri integer olarak mı çeviriyor. Normalde string ve integer değerlerini çevirmek için kullanıyoruz. Bunun kullanım mantığını anlayamadım.

Integer olarak çevirir. Değişken sonuna ".getClass().getSimpleName()" yazarak öğrenebilirsiniz.

System.out.println( Integer.valueOf (Integer.MAX_VALUE).getClass().getSimpleName() );

1595961398917.png
 
Ben anlatamadım galiba kusuruma bakmayın. Söylemek istediğim " Integer.MAX_VALUE " bize en büyük integer değerini döndürmüyor mu? " Integer.valueOf " ise örnek olarak string bir değeri integer' a çeviriyor diye biliyor. Yani iki tane integer kullanılmasında ki mantığı kavrayamadım.
 
Ben anlatamadım galiba kusuruma bakmayın. Söylemek istediğim " Integer.MAX_VALUE " bize en büyük integer değerini döndürmüyor mu? " Integer.valueOf " ise örnek olarak string bir değeri integer' a çeviriyor diye biliyor. Yani iki tane integer kullanılmasında ki mantığı kavrayamadım.
İnteger olarak değer veriyor zaten. System.out.println((Integer.MAX_VALUE)); yazsanızda olur. Sanırım int değeri int değere dönüştürme yapıyor. :D
1595962468475.png
 
Anladım hocam, farklı bir durum mu söz konusu acaba diye düşündüm. Tuhaf farklı bir şey öğrenirsem rahatsız ederim. Yazılarınızın devamını dilerim.
 

Blog girdisi detayları

Ekleyen
Furkaninkosesi
Okuma süresi
2 dakika okuma
Görüntüleme
747
Yorumlar
5
Son güncelleme

Yazılım kategorisindeki diğer girdiler

Furkaninkosesi adlı kullanıcının diğer girdileri

Bu girdiyi paylaş

Geri
Yukarı