Java - Nesne ve Sınıflar

Java, Nesne Tabanlı bir Dildir. Nesneye Yönelik özelliğe sahip bir dil olarak Java, aşağıdaki temel kavramları destekler:

  • Polymorphism
  • Inheritance
  • Encapsulation
  • Abstraction
  • Classes
  • Objects
  • Instance
  • Method
  • İleti geçişi

Bu bölümde, kavramlara - Sınıflar ve Nesneler - bakacağız.

  • Object- Nesnelerin durumları ve davranışları vardır. Örnek: Bir köpeğin durumları vardır - renk, isim, cins ve davranışlar - kuyruğu sallama, havlama, yeme. Bir nesne, bir sınıfın örneğidir.

  • Class - Bir sınıf, türündeki nesnenin desteklediği davranışı / durumu tanımlayan bir şablon / plan olarak tanımlanabilir.

Java'daki nesneler

Şimdi nesnelerin ne olduğuna derinlemesine bakalım. Gerçek dünyayı düşünürsek, çevremizde pek çok nesne bulabiliriz, arabalar, köpekler, insanlar vb. Bütün bu nesnelerin bir durumu ve bir davranışı vardır.

Bir köpeği düşünürsek, durumu - adı, cinsi, rengi ve davranışı - havlamak, kuyruğunu sallamak, koşmaktır.

Yazılım nesnesini gerçek dünya nesnesiyle karşılaştırırsanız, çok benzer özelliklere sahiptirler.

Yazılım nesnelerinin de bir durumu ve davranışı vardır. Bir yazılım nesnesinin durumu, alanlarda saklanır ve davranış, yöntemler aracılığıyla gösterilir.

Dolayısıyla, yazılım geliştirmede yöntemler bir nesnenin iç durumu üzerinde çalışır ve nesneden nesneye iletişim yöntemler aracılığıyla yapılır.

Java Sınıfları

Sınıf, tek tek nesnelerin oluşturulduğu bir plandır.

Aşağıda bir sınıf örneği verilmiştir.

Misal

public class Dog {
   String breed;
   int age;
   String color;

   void barking() {
   }

   void hungry() {
   }

   void sleeping() {
   }
}

Bir sınıf, aşağıdaki değişken türlerinden herhangi birini içerebilir.

  • Local variables- Yöntemler, yapıcılar veya bloklar içinde tanımlanan değişkenlere yerel değişkenler denir. Değişken, yöntem içinde bildirilecek ve başlatılacak ve değişken, yöntem tamamlandığında yok edilecektir.

  • Instance variables- Örnek değişkenleri, bir sınıf içindeki ancak herhangi bir yöntemin dışındaki değişkenlerdir. Bu değişkenler, sınıf somutlaştırıldığında başlatılır. Örnek değişkenlerine, söz konusu sınıfın herhangi bir yönteminin, yapıcısının veya bloklarının içinden erişilebilir.

  • Class variables - Sınıf değişkenleri, herhangi bir yöntemin dışında, bir sınıf içinde static anahtar sözcüğü ile bildirilen değişkenlerdir.

Bir sınıf, çeşitli yöntem türlerinin değerine erişmek için herhangi bir sayıda yönteme sahip olabilir. Yukarıdaki örnekte, havlama (), aç () ve uyku () yöntemlerdir.

Aşağıda, Java Dili sınıflarına bakılırken tartışılması gereken önemli konulardan bazıları verilmiştir.

İnşaatçılar

Sınıflar hakkında tartışırken en önemli alt konulardan biri kurucular olacaktır. Her sınıfın bir kurucusu vardır. Bir sınıf için açıkça bir kurucu yazmazsak, Java derleyicisi o sınıf için varsayılan bir kurucu oluşturur.

Her yeni nesne oluşturulduğunda, en az bir kurucu çağrılacaktır. Oluşturucuların ana kuralı, sınıfla aynı ada sahip olmaları gerektiğidir. Bir sınıfın birden fazla kurucusu olabilir.

Aşağıda bir kurucu örneği verilmiştir -

Misal

public class Puppy {
   public Puppy() {
   }

   public Puppy(String name) {
      // This constructor has one parameter, name.
   }
}

Java ayrıca , bir sınıfın yalnızca bir örneğini oluşturabileceğiniz Singleton Sınıflarını da destekler .

Note- İki farklı tip kurucumuz var. İnşaatçıları sonraki bölümlerde ayrıntılı olarak tartışacağız.

Bir Nesne Oluşturmak

Daha önce bahsedildiği gibi, bir sınıf nesnelerin planlarını sağlar. Yani temel olarak, bir sınıftan bir nesne oluşturulur. Java'da, yeni anahtar sözcük, yeni nesneler oluşturmak için kullanılır.

Bir sınıftan nesne oluşturmanın üç adımı vardır -

  • Declaration - Nesne türüne sahip değişken adı olan bir değişken bildirimi.

  • Instantiation - Nesneyi oluşturmak için 'new' anahtar sözcüğü kullanılır.

  • Initialization- 'Yeni' anahtar kelimesinin ardından bir kurucuya çağrı gelir. Bu çağrı yeni nesneyi başlatır.

Aşağıda bir nesne oluşturmaya bir örnek verilmiştir -

Misal

public class Puppy {
   public Puppy(String name) {
      // This constructor has one parameter, name.
      System.out.println("Passed Name is :" + name );
   }

   public static void main(String []args) {
      // Following statement would create an object myPuppy
      Puppy myPuppy = new Puppy( "tommy" );
   }
}

Yukarıdaki programı derler ve çalıştırırsak, aşağıdaki sonucu verecektir -

Çıktı

Passed Name is :tommy

Örnek Değişkenlerine ve Yöntemlerine Erişim

Örnek değişkenlere ve yöntemlere, oluşturulan nesneler aracılığıyla erişilir. Bir örnek değişkenine erişmek için, tam olarak nitelenmiş yol aşağıdadır -

/* First create an object */
ObjectReference = new Constructor();

/* Now call a variable as follows */
ObjectReference.variableName;

/* Now you can call a class method as follows */
ObjectReference.MethodName();

Misal

Bu örnek, bir sınıfın örnek değişkenlerine ve yöntemlerine nasıl erişileceğini açıklar.

public class Puppy {
   int puppyAge;

   public Puppy(String name) {
      // This constructor has one parameter, name.
      System.out.println("Name chosen is :" + name );
   }

   public void setAge( int age ) {
      puppyAge = age;
   }

   public int getAge( ) {
      System.out.println("Puppy's age is :" + puppyAge );
      return puppyAge;
   }

   public static void main(String []args) {
      /* Object creation */
      Puppy myPuppy = new Puppy( "tommy" );

      /* Call class method to set puppy's age */
      myPuppy.setAge( 2 );

      /* Call another class method to get puppy's age */
      myPuppy.getAge( );

      /* You can access instance variable as follows as well */
      System.out.println("Variable Value :" + myPuppy.puppyAge );
   }
}

Yukarıdaki programı derler ve çalıştırırsak, aşağıdaki sonucu verecektir -

Çıktı

Name chosen is :tommy
Puppy's age is :2
Variable Value :2

Kaynak Dosya Beyanı Kuralları

Bu bölümün son kısmı olarak, şimdi kaynak dosya bildirim kurallarına bakalım. Bu kurallar, bir kaynak dosyada sınıfları, içe aktarma ifadelerini ve paket ifadelerini bildirirken önemlidir .

  • Kaynak dosya başına yalnızca bir genel sınıf olabilir.

  • Bir kaynak dosyanın birden çok genel olmayan sınıfı olabilir.

  • Public sınıf adı, kaynak dosyanın adı da olmalıdır ve eklenmesi gereken .javasonunda. Örneğin: sınıf adı public class Employee {} ise kaynak dosya Employee.java olarak olmalıdır.

  • Sınıf bir paket içinde tanımlanmışsa, paket ifadesi kaynak dosyadaki ilk ifade olmalıdır.

  • Import deyimleri mevcutsa, paket deyimi ile sınıf bildirimi arasına yazılmalıdır. Paket deyimi yoksa, kaynak dosyadaki ilk satır import deyimi olmalıdır.

  • İçe aktarma ve paket deyimleri, kaynak dosyada bulunan tüm sınıfları ifade eder. Kaynak dosyadaki farklı sınıflara farklı içe aktarma ve / veya paket ifadeleri bildirmek mümkün değildir.

Sınıfların birkaç erişim seviyesi vardır ve farklı sınıf türleri vardır; soyut sınıflar, final sınıfları vb. Tüm bunları erişim değiştiriciler bölümünde açıklayacağız.

Yukarıda belirtilen sınıf türlerinin yanı sıra, Java'da İç sınıflar ve Anonim sınıflar adı verilen bazı özel sınıflar da vardır.

Java Paketi

Basit bir deyişle, sınıfları ve arayüzleri kategorize etmenin bir yoludur. Java'da uygulama geliştirirken yüzlerce sınıf ve arayüz yazılacaktır, bu nedenle bu sınıfları kategorize etmek bir zorunluluktur ve hayatı çok daha kolaylaştırır.

İçe Aktarım İfadeleri

Java'da, paketi ve sınıf adını içeren tam nitelikli bir ad verilirse, derleyici kaynak kodunu veya sınıfları kolayca bulabilir. Import deyimi, derleyicinin söz konusu sınıfı bulması için uygun konumu vermenin bir yoludur.

Örneğin, aşağıdaki satır derleyiciden java_installation / java / io dizininde bulunan tüm sınıfları yüklemesini ister -

import java.io.*;

Basit Bir Örnek Olay İncelemesi

Örnek olay incelememiz için iki sınıf oluşturacağız. Bunlar Çalışan ve Çalışan Testi'dir.

Önce not defterini açın ve aşağıdaki kodu ekleyin. Bunun Employee sınıfı olduğunu ve sınıfın genel bir sınıf olduğunu unutmayın. Şimdi, bu kaynak dosyayı Employee.java adıyla kaydedin.

Employee sınıfının dört örnek değişkeni vardır - ad, yaş, atama ve maaş. Sınıfın, bir parametre alan, açıkça tanımlanmış bir kurucusu vardır.

Misal

import java.io.*;
public class Employee {

   String name;
   int age;
   String designation;
   double salary;

   // This is the constructor of the class Employee
   public Employee(String name) {
      this.name = name;
   }

   // Assign the age of the Employee  to the variable age.
   public void empAge(int empAge) {
      age = empAge;
   }

   /* Assign the designation to the variable designation.*/
   public void empDesignation(String empDesig) {
      designation = empDesig;
   }

   /* Assign the salary to the variable	salary.*/
   public void empSalary(double empSalary) {
      salary = empSalary;
   }

   /* Print the Employee details */
   public void printEmployee() {
      System.out.println("Name:"+ name );
      System.out.println("Age:" + age );
      System.out.println("Designation:" + designation );
      System.out.println("Salary:" + salary);
   }
}

Bu öğreticide daha önce belirtildiği gibi, işlem ana yöntemden başlar. Bu nedenle, bu Employee sınıfını çalıştırabilmemiz için bir ana yöntem olmalı ve nesneler oluşturulmalıdır. Bu görevler için ayrı bir sınıf oluşturacağız.

Aşağıda, Employee sınıfının iki örneğini oluşturan ve her bir değişken için değer atamak üzere her nesnenin yöntemlerini çağıran EmployeeTest sınıfı yer almaktadır.

Aşağıdaki kodu EmployeeTest.java dosyasına kaydedin.

import java.io.*;
public class EmployeeTest {

   public static void main(String args[]) {
      /* Create two objects using constructor */
      Employee empOne = new Employee("James Smith");
      Employee empTwo = new Employee("Mary Anne");

      // Invoking methods for each object created
      empOne.empAge(26);
      empOne.empDesignation("Senior Software Engineer");
      empOne.empSalary(1000);
      empOne.printEmployee();

      empTwo.empAge(21);
      empTwo.empDesignation("Software Engineer");
      empTwo.empSalary(500);
      empTwo.printEmployee();
   }
}

Şimdi, her iki sınıfı da derleyin ve ardından sonucu aşağıdaki gibi görmek için EmployeeTest'i çalıştırın -

Çıktı

C:\> javac Employee.java
C:\> javac EmployeeTest.java
C:\> java EmployeeTest
Name:James Smith
Age:26
Designation:Senior Software Engineer
Salary:1000.0
Name:Mary Anne
Age:21
Designation:Software Engineer
Salary:500.0

Sırada ne var?

Bir sonraki oturumda Java'daki temel veri türlerini ve bunların Java uygulamaları geliştirirken nasıl kullanılabileceğini tartışacağız.