Nesneye yönelik  Programlama : Java

Nesneye yönelik  Programlama : Java

 

Nesneye yönelik  Programlama

Object Oriented Programlama :

Object oriented programlamanın (OOP), 60’lı yıllarda Simula dilinin tasarlanması ile başladığı kabul edilmektedir. Simula, bir simulasyon dili olarak tasarlanmıştır, kullanıcıya sistem
içersindeki mevcut nesnelerin ve bunların değişik durumlardaki davranışlarının modellenmesi  yönünde bir yaklaşımla program yapma imkanı sağlanmıştır.
Günümüzde eğer bir dil programcıya sorunu parçalar ayırma hakkı tanıyorsa, ve program  parçalara ayrıldığında her bir parçanın ayrı ve özgün davranışl arı tanımlanabiliyor ve hatta kendi  durumları söz konusu olabiliyorsa o zaman programlama dilinin obje tanımlı bir dil olduğunu  söyleyebiliriz. Object oriented bir program birbiriyle ilişkili bağımsız modüllerden oluşur. Fakat bir programlama dilinin gerçekten object oriented olması için aşağıdaki özellikleri desteklemek  zorundadır.

Encapsulation (Veri soyutlama ve saklama prensibi): Tek bir obje tanımı bazı işlemlerde değişik durumlara rağmen doğru tepkileri verebilmeli ve bütün bu detaylar
objenin içinde özel ve gizli kalabilmelidir.

Inheritance (Kalıtım,Miras): Yeni sınıflar daha önceden var olan sınıflardan türeyebilmeli, hem kod tekrar kullanımı hem de geliştirilebilirlik sağlar.


PolyMorphism (Çok biçimlilik): Bir fonksiyon yada metodun değişik sınıflardaki  objelere uygulanmasıyla aynı mantıksal sonucu vermesi. Veya başka bir deyişle, aynı  isimdeki operasyonların değişik objeler için farklı biçimlerde algılanması olarak tanımlanabilir.


Dynamic Loading (Dinamik Yükleme): Objelerin her yerden çağrılması ki buna ağ da dahildir ve hatta çağrılan objenin tipi dikkate alınmadan ona mesaj geçilebilmesidir.

 

Class(sinif) nedir?

Sınıf Tanımı
Class bir şablon tarzıdır. Bir sınıflama mantığı söz konusudur. Programımızda kullanacağımız belli nesneleri (objectleri) ortak bir tarzdan türetmeye çalışırız. Güncel hayat da böyledir.
Çeşitlerce araba vardır, spor, cabrio, tek kapı ama biz araba adlı genel bir tanım verdiğimizde  hepsini ele alırız, ama her birini tanımlamak için genel araba tanımına detaylar ekler durumlar veririz. Bunda değer gruplarını ikiye ayırıyoruz. Bir sınıf için durumlar yani değişkenler ve de davranışlar yeni metotlar vardır. Bunu çekirdek bir yapıyla gösterebiliriz.

=========================================================================================================================================

Örnek:
public class Araba
{
public String name;
public int erstzulassung;
public int leistung;
}
Araba Class
class Araba {
private int hız;
private float depo, ortalama_hız;
private int yon;
String renk;
// class metotları
public Araba (String renk) {/ / constructor
this.renk = renk;
}
public void sur (int yeni_hız) {
depo -= ( float) hız/ortalama_hız;
if (depo< = 0.0)
dur ( );
else
hız=yeni_hız;
}
public void dur ( ) {
frenYap ( );
hız = 0.0
}

=========================================================================================================================================

 

Sınıf Olusturma
Burda sınıfların nesnelerden nasıl meydana getirildiklerini açıklıyacağız..
Aşağidaki ifade ile bir sınıf yapısı gösterilmiştir rahatlıkla bu yapıyı kullanarak bir sınıf oluşturabiliriz. ıki karakteristiğe sahiptir sınıf tanımlanması ve sınıf yapısı

=========================================================================================================================================

Örnek:
import java.awt.*;
class selam {
static String name;
public void setYourName(String n)
{
name=n;
}
public void sayHello(Graphics g)
{
g.drawString("Selam " + name + " Bey !",25,60);
}
}

=========================================================================================================================================

 

Sınıf Tanımlanması
Bir sınıf tanımlanmasıda sınıflar isimleriyle birlikte ifade edilebilirler. Ve bunun yanısıra sınıf tanımlanmasında diğer özelliklerde belirtilmek gerekir. Mesela sınıfın nasıl bir özellik arz etmesi gerektiği bir supersınıf mı ypksa bir alt sınıfmı?. veya bunların yanısıra sınıfın ulaşılabilirliğide burada belirtirlir public, final
veya abstract olması. Bir sınıf yapısı sınıf tanımlanmasından sonraki gelen kısımdır bu kısım ayrıca köşeli parentez ile sınırlandırılmıştır.Bir sınıf yapısı aralık değişkenlerinin
tanımları ve method tanımlamaları ve bu methodların içerikleri bu köşeli parantezler içerisinde yazılmalıdır.


Bir sınıf durumu onun sınıf değişkenleri tarafından tasvir edilir.Biz sınıf üyeleri değişkenlerini tanımlarını sınıf yapısı içerisinde tanımlanır.Tipik olarak, biz
değişkenleri methodların tanımlanmasından hemen önce yaparız. 

classDeclaration {
member variable declarations
method declarations
}

 

Üye degiskenlerinin tanimlanmasi

Az olarak,bir üye degiskeni tanimi iki unsura sahiptir: veri degiskenin türü ve onun ismi.

type variableName; // minimal member variable declaration

Küçük degisken tanimi diger degisken tanimlari gibidir, bizim yazdigimiz diger Java programlarinda oldugundaki gibi örnegin yerel degiskenler veye method parametreleri gibi.Asagidaki örnek kodda görülgügü üzere dogal üye degiskeni Integer olarak isimlendirilmistir sinif IntegerClass ile birlikte.

class IntegerClass {

int anInteger;

. . .

// Burda methodlari Tanimla

. . .

}

 

Burdan anlasilacagi gibi üye degiskbe tanimlamalari sinif yapisi içerisinde gösterilir. methodla birlikte gösterilmez.. Bu pozisyon sinif yapisi ile birlikte bulunur degisken üye degiskenidir. Üye degiskenlerinin ismi uygun bir java belirtgeçi veya ve anlasma küçük harf ile baslar (sinif isimleri genellikle büyük harf ile baslar.).Biz birden fazla üye değişkeni tanimlayamayiz ayni isim altinda ayni sinif yapisi içinde.Fakat Üye değişkenleri ve methodlar ayniisimde olababilirler.Örnegin Asagidaki kod hatasiz olarak çalisir.

class IntegerClass {

int anInteger;

int anInteger() { // a method with the same name as a

member variable

. . .

}

}

 

Kisaca tanim protosu asagidaki gibidir.:

[accessSpecifier] [static] [final] [transient] [volatile] type variableName Üye degiskenleri tanimlari asagidaki gibi tanimlanir :

  • ·  Ulasim belirteci tanimlar hangi diger siniflar ulasabilir bu degiskene.Biz ulasimi kontrol edebiliriz ayni belirtgeçler, kullanarak.,bu yüzden ulasim kontrolu sinifin üye değişkenlerine kapsar bizim nasil bütün üye degiskenlerine ve methodlarina ulasacagimizi.
  • ·  static içerir bu degisken bir siin degiskenidir aralik üye degikenin tam tersi gibi. Biz sinif methodlarini static to anahtar kelimesiylede tanimlayabiliriz.
  • ·  final degiskenin sabit oldugunu gösterir.
  • ·  transient degiskeneleri nesne durum kisminin parçasi degildir.
  • ·  volatile tanimlanir zamana bagli olmayarak. Bir sinif icinde tanimlanan degiskenler ulasilma tekniklerine gore ve ozelliklerine gore bir cok kisma ayrilir.

Static :

Bu tip degiskene sinif degiskeni de denir. Olusturulan butun nesnelerin icin bir kopya vardir ve degisiklige ugradigi zaman hepsi icin ayni degisiklik soz konusudur.

Sabitler :

Final anahtar sozcuguyle belirtilirler. Program calisma esnasinda kesinlikle degistirilmelerine izin verilmez.

=========================================================================================================================================

Örnek:

import java.awt.* ;

import java.applet.* ;

public class selamla extends Applet{

Label prompt; // prompt user to input

TextField input; // input values here

String adsoy,args; // store input value

selam greeter1 = new selam();

public void init()

{

prompt = new Label( "Enter your name and press

Enter:" );

input = new TextField( 10 );

add( prompt ); // put prompt on applet

add( input ); // put input on applet

}

public void paint(Graphics d) {

greeter1.setYourName(adsoy);

greeter1.sayHello(d);

}

public boolean action( Event e, Object o )

{

adsoy = input.getText();

input.setText( "" ); // clear data entry

field

repaint();

return true;

=========================================================================================================================================

Method Tanimlanmalari

Bir method tanimi derleme esnasinda bir çok bilgiler tedarik eder ve çalisma sirasinda ve diger nesne ve siniflar hakkinda da bir çok bilgiyi alabiliriz.Bunun yanisira, methodun ismi ve tanimlanmasibilgi tasi örnegin, methodun ve kaç tane parametre döndürülmesi gerektigi method tarafindan ve ayni zamanda diger siniflarin ve nesnelerin çagrilacagini belirtir.

class Stack {

boolean isEmpty() {

}

}

 

Method’tan Deger Döndürmek

Javanin dönecek degerinin tipinin belirtilmesine ihtiyaci vardir.Eger bir method herhangi bir deger döndürmüyorsa, o void anahtar söcügü ile tanimlanmalidir..

class Stack {

static final int STACK_EMPTY = -1;

Object[] stackelements;

int topelement = STACK_EMPTY;

. . .

boolean isEmpty() {

if (topelement == STACK_EMPTY)

return true;

else

return false;

}

}

Fakat, pop() methodu referans bir veri tipi döndürüyorsa buna nesne denir..

 

class Stack {

static final int STACK_EMPTY = -1;

Object[] stackelements;

int topelement = STACK_EMPTY;

. . .

Object pop() {

if (topelement == STACK_EMPTY)

return null;

else {

return stackelements[topelement--];

}

}

}

Methodlar return anahtar sözcügünü kullanilirlar .ve herhangi bir method return yapisi tasiyorsa void ile tanimlanmamalidir.

Methodun Ismi

Bir method ismi herhangi bir Java tanimlayicisi olabilir. There are three special cases to consider in regards to Java method names:

class DataRenderer {

void draw(String s) {

. . .

}

void draw(int i) {

. . .

}

void draw(float f) {

 

Not: The information within the parenthesis in the method declaration are arguments to the method.

 

1.Herhangi bir method sinif ismi ile ayni ise bu metoda biz baslandiricidiyoruz.Bu metodun özel bir görevi vardir.Baslandiricilar sinif tarafından üretilen nesnenin baslangiç degerleri verilmesi için kullanilir. Constructors sadece Java new operatorü ile çagrilirlar. Bir sinif methodu yeniden yazabilir supersinif da tanimlanmis bir methodu. Tekrar ile yüklenecek method atni isimden olmak zorundadir. Bunlarin yaninda method tanimlanmasinda iki elemana ihtiyaç duyar.Bir methos tanimlamasi baska elemanlarida içerir.Bütün bu elemanlar method tarafından kabul edilen argumanlari açiklarlar.

 

 

 

 

1 Yorum Yapıldı

  1. php yazılım uzmanı 2017-12-07 11:41:27

    I'm really loving the theme/design of your web site. Do you ever run into any web browser compatibility problems? A couple of my blog visitors have complained about my site not working correctly in Explorer but looks great in Chrome. Do you have any suggestions to help fix this issue?

Yorum Yollayın