Java’cılar Için Scala – 3 [OOP]

0 660

Scala ile hem functional hem de OOP özelliklerini kullanabilirsiniz. OOP önemli bir kavram, bu kavramın detaylarına değinmeden Scala’daki karşılığını anlamayaca çalışacağız.

Önceki yazılara aşağıdaki linklerden ulaşabilirsiniz.

Java’cılar için Scala -1 Temel

Java’cılar için Scala-2 Collections

Bazı kavramları örnek bir projeye ekleme yaparak ilerleyeceğiz.

Burada da en temel yapımız class‘lar. Student, Lesson ve Teacher class’ları oluşturacağız ve konularımızı bu class’lar üzerinden örneklendireceğiz.

Burada iki önemli nokta var. Birincisi access modifier belirtmedik ve Scala’da belirtmezseniz default’da public‘tir. İkincisi ise değişkenlere ilk değer ataması zorunlu.

Primary Constructor

Scala’da yukarıdaki gibi constructor tanımları primary constructor olarak geçiyor. Aslında parametre alan bir method gibi sınıf tanımında karşımıza çıkıyor. Primary constructor boş da olabilir parametre de alabilir.

Auxiliary Constructor

Aslında temelde yaptığımız constructor overloading.

Kalıtım ( Inheritance)

Java’da olduğu gibi extends key word’ü ile kalıtımı gerçekleştirebilirsiniz.

Final Kullanımı

Java’da daha olduğu gibi final ile class method ve properties seviyesinde kullanabilirsiniz. Aynı özellikler burada da geçerli.

  • final class extends edilemez.
  • final method override edilemez.
  • final properities ise değerini değiştiremezsiniz.

Trait

Trait hem soyut hem de somut methodlar içerebilir. Somut methodtan kastımız tabii ki metodun gövdesi olması. Böyle belirtince aklınıza abstract class aklınıza gelebilir kaldı ki hatta Java 8 ile de interface’lerde benzer bir yapı sağlanabilir. Buradaki en önemli farklı çoklu kalıtım ve bu özellik sadece trait’ler sağlanması.

Ayrıca şu bilgimizi de hatırlamakta fayda var. Kalıtım yoluyla aldığımız soyut methodları alt class’lar gerçeklemek durumundadır.

Diğer bir nokta ise çoklu kalıtımda Java’da birden fazla interface’den kalıtım sağlayabiliriz ve bunu yaparken virgül(class A implements B, C) kullanıyoruz. Burada ise with key word’ü ile bu işlemi gerçekleştirebiliyoruz. (Bence çok mantıklı :D)

 

Case Class

case key word’ünü ilk bölümde switch case yapısında görmüştük. Burada da benzer şekilde kullanılabilir. Ayrıca aşağıdaki gibi class oluşturduğunuzda new ile bir instance oluşturmanıza gerek yoktur.

class tanımında gördüğümüz üzere var ya da val olduğunu belirtmedik. default olarak val tanımlıdır ve class’ın elemanları olduğu için özelliklerine de ulaşabiliriz. Bu sayede boilerplate kodu azaltmış oluyoruz.

 

Faydalı olması dileğiyle.

Email adresiniz yayınlanmayacaktır.