Bölüm 4 - Objects and Classes 3

Defining Your Own Classes (Kendi Sınıflarımızı Tanımlama)

Eğer ki kendi class'larımızı tanımlamak istersek şu syntaxı kullanmamız yeterli olur:

class ClassName{
  field1,
  field2,

  constructor1,
  constructor2,

  method1
  method2

}

Biz sadece bir tane source file da yani .java uzantılı dosyada sadece bir tane public class'a sahip olabiliriz. Birden fazla non-public class'lara sahip olabilmemizde problem yoktur ayrıca class name ile dosya ismi aynı olmak zorundadır.

public class EmployeeTest {

    public static void main(String[] args) {

        Employee[] staff = new Employee[2];
        staff[0] = new Employee("Minter Coder", 75000, 1987, 12, 15);
        staff[1] = new Employee("Harry Hacker", 50000, 1989, 12, 15);
        
        for(Employee e : staff){
            System.out.println("name : "+e.getName()+", salary="+e.getSalary()+" "+e.getHireDay());
        }
    }
}

class Employee {

    private String name;
    private double salary;
    private LocalDate hireDay;

    public Employee(String name, double salary, int year, int month, int day) {
        this.name = name;
        this.salary = salary;
        this.hireDay = LocalDate.of(year, month,day);
    }

    public Employee() {
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getSalary() {
        return salary;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }

    public LocalDate getHireDay() {
        return hireDay;
    }

    public void setHireDay(LocalDate hireDay) {
        this.hireDay = hireDay;
    }

}

Şimdi biz 2 class'a sahibiz EmployeeTest ve Employee;

Employee classımızda bilmemiz gereken birkaç şey vardır:

  • Bir constuctor class ile aynı sınıfa sahiptir.
  • Bir class bir yada daha fazla constructora sahip olabilir.
  • Bir constuctor sıfır,bir yada daha fazla parametreye sahip olabilir.
  • Bir constructor'un dönüş değeri yoktur.
  • Bir constructor her zaman new operatörü ile çağrılır.

Employee clasımız name,salary ve hireDay olmak üzere 3 tane instance fields'a sahiptir. 2 adet constructoru vardır ve getter/setter methodları da bulunmaktadır.

Declaring Local Variables with var (var ile local variable tanımlama)

Java 10 ile birlikte, biz local variable'leri var keywordü ile istersek tanımlayabiliriz. Yani tipini belirtmesek de olur örneğin:

Employee minterCoder = new Employee("Minter Coder", 75000, 1987, 12, 15);

yerine

var minterCoder = new Employee("Minter Coder", 75000, 1987, 12, 15);

kullanabiliriz. !! Unutulmamalıdır ki var keywordü sadece ama sadece methodlar içerisinde local variables üzerinde kullanılabilir.

Working with null References

Eğer ki bizim herhangi bir object variables'imiz bir null'u işaret ediyorsa ve biz bunu kullanırsak eğer otomatikman NullPointerException hatası alırız.

LocalDate rightNow = null;
String s = rightNow.toString(); // NullPointerException

Eğer ki bir object'in null'a mı referans ediyor yoksa etmiyor mu bunu öğrenmek istersek:

public Employee(String name, double salary, int year, int month, int day) {
    if (name == null){
      name = "";
    }else {
      this.name = name;
    }
    this.salary = salary;
    this.hireDay = LocalDate.of(year, month,day);
}

böyle kontrol edebiliriz yada diğer bir yaklaşım olarak:

public Employee(String name, double salary, int year, int month, int day) {
    this.name = Objects.requireNonNullElse(name,"The name cannot be null");
    this.salary = salary;
    this.hireDay = LocalDate.of(year, month,day);
}

Eğer ki null ise name yerine "The name cannot be null" ataması yapsın.

Eğer ki direkt olarak hata fırlatmasını istersek eğer o zaman

public Employee(String name, double salary, int year, int month, int day) {
    this.name = Objects.requireNonNull(name,"The name cannot be null");
    this.salary = salary;
    this.hireDay = LocalDate.of(year, month,day);
}

Objects.requireNonNull methodunu kullanabiliriz.

← Bloğa Dön