Posts

Showing posts with the label OOP in Java

S O L I D

S: Single Responsibility Principle O: Open-Closed Principle   L: Liskov Substitution Principle I: Interface Segregation Principle D: Dependency Inversion Principle S : Her bir class yalniz bir ishi gormelidir .  DBConnector classimiz var. Bu class yalniz DB ya connect ishini gormelidir, her hansi CRUD emeliyyati burda olmasi duzgun deyil. Bashqa numune, Tutaq ki, Student ve Teacher classlarimiz var. Melumdur ki, Student ve Teacher ayri ayriliqda datalara sahibdir, bunlari eyni class daxilinde tutmaq duzgun deyil. Bu metodlara da aiddir. O : Class extends olunmaga aciq, modifier olunmaga bagli olmalidir. Tutaq ki, Car ve ondan extends eden BMW classi var. Sonradan eger BMW classinda her hansi deyishiklik olsa, bu zaman NewBMW classini yaradib ve BMW den extends etmeliyik. BMW classinin ichinde deyishiklik etmek duzgun sayilmir. L : Extends edilen classin obyekti evezine extends olunan classin obyektini gondermek hemishe mumkun olmalidir. Meselen Car classini...

Interface

Abstract class kimi Interface - in de obyektini yaratmaq olmur. Esas ferq bundan ibaretdir ki, class yalniz bir classi extends ede biler, lakin bir neche interface i implements ede biler. extends - compile time safety implements - safety ustunluyu yoxdur Ferqi bele izah etmek olar ki, meselen Car classinda start ve stop metodlari var. Lakin bu metodlar ayricaliqda ozleri bir xusisyyetdir. Yeni neyinki mashin, bir neche eshya start ve stop oluna biler.Meselen Telefonun start ve stop olmasi da bir xususiyyetdir ve bu o demek deyil ki , telefon da Car classindan extends etmelidir. Marker Interface - ler nedir ? Misal uchun Serializable interface gostermek olar. Misal uchun her hansisa classn obyektini sebekede kimese gonderende , fayla yazanda ve ya oxuyanda mutleq bu interface i implement etmelidir. Bes niye gore extends etmir, implement edir ? Evvela, bir class yalniz bir classs dan extends ede biler. Bu o demekdir ki, meselen BMW class eyni zamanda hem Serailizable classind...

Abstraction

Tutaq ki, Car, BMW, Mercedes classlarimiz var. Car classinda start stop speedUp metodlari movcuddur. BMW ve Mercedes Car classindan extend etdikden sonra bu metodlari Override elemelidir ki, ozune uygunlashdirsin. Eger Override elemek yaddan chixsa, ve bashqa adli metod duzeltse, bu zaman arxitekturadan qiraga chixmish olacaq. Buna gore abstract class lardan istifade olunur. Abstract class da verdiyimiz arxitekturani, yeni verdiyimiz metodlar mutleq override olunmalidir. Abstract classlarin obyektini yaratmaq mumkun deyil Eger yaratmaga cehd etsek, bu zaman JVM ozu avtomatik obyekt yaradir ve bu obyekt abstract class in obyekti olmur, sadece onu extend ede classin obyekti olur. Car abstractCar = new Car() { @Override public void start () { } @Override public void stop () { } } ; Inner Class ve Nested Class anlayishlari Inner class dedikde, Class daxilinde yaradilan ve yalniz obyekte xas olan class basha dushulur. (non-static) Nested c...

OOP in Java - Inheritance and Polymorphism

Image
Tutaq ki, Student ve Teacher class-larimiz var ve bu class-lar name , surname,  age adli eyni deyishenlere sahibdir. Umumi baxsaq, name surname age her bir kesde olur. Buna gore bir Person class i duzeldirik ve ichine name surname age deyishenlerini atiriq. Student ve Teacher de olan eyni adli deyishenleri silirik. Lakin, hele de proqramda Student ve Teacher hele de Person sayilmir. Bunun uchun uygun class-lari Person classindan extend etmek lazimdir. Bu zaman, uygun class-lar Person classinin xususiyyetlerine ( yeni, deyishen ve ya metodlarina sahib olacaq ). Duzgun halda qeyd etmek olar ki, Student ve Teacher classi daxilinde xususi olaraq qeyd olunur ki, Person classinin deyishen ve metodlari bu uygun classa aiddir. Lakin, birbasha aid deyil. Tutaq ki, Teacher classina xas olan salary deyisheni movcuddur. Bu zaman, hemin deyisheni Teacher classinda yaratmaliyiq. Bu deyishene ne Student classi ne de Person classi sahib olacaq. Burdan bele netice alinir ki, extend olunan cl...