Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> Java

Java Onder de Knie: Objects, Classes en Kern OOP Concepten

Java is een Object-Georiënteerde Taal. Als taal met OO-karakter ondersteunt Java de volgende fundamentele concepten:

  • Polymorfisme
  • Erfelijkheid (Inheritance)
  • Encapsulatie
  • Abstractie
  • Classes
  • Objecten
  • Instanties
  • Methodes
  • Bericht Doorgeven (Message Passing)

In dit hoofdstuk kijken we naar Classes en Objecten.

  • Object – Heeft states en behaviors. Voorbeeld: hond met state (kleur, naam, ras) en behavior (blaf, staart wagen, eet). Een object is een instantie van een class.
  • Class – Een sjabloon/blueprint die beschrijft welk gedrag/state het object van dat type ondersteunt.

Objecten in Java

In de echte wereld vind je veel objecten: auto's, honden, mensen. Allen hebben state en behavior.

Een hond: state = naam, ras, kleur; behavior = blaffen, staart wagen, rennen.

Software objecten hebben ook state en behavior. State wordt opgeslagen in velden (fields), behavior getoond via methodes. Methodes opereren op de interne state van een object en object-communicatie gebeurt via methodes.

Classes in Java

Een class is een blueprint waaruit individuele objecten gemaakt worden.

Voorbeeld

public class Dog {
  String breed;
  int age;
  String color;
  void barking() { }
  void hungry() { }
  void sleeping() { }
}

Een class kan deze variabeltypen bevatten:

  • Lokale variabelen – Binnen methodes, constructors of blokken gedeclareerd. Gedeclareerd en geïnitialiseerd in de methode, vernietigd na afloop.
  • Instance variabelen – In de class, buiten methodes. Geïnitialiseerd bij instantiatie. Toegankelijk vanuit alle methodes, constructors, blokken van die class.
  • Class variabelen – In de class, buiten methodes, met static keyword.

Een class kan methodes hebben om waarden te benaderen. In het voorbeeld: barking(), hungry(), sleeping().

Constructors

Elke class heeft een constructor. Zonder expliciete constructor bouwt de Java compiler een default constructor die alle member variabelen op nul initialiseert. Zodra je je eigen constructor definieert, wordt de default niet meer gebruikt.

Elke keer dat een nieuw object gemaakt wordt, wordt minstens één constructor aangeroepen. Hoofdregel: constructor heeft dezelfde naam als de class. Een class kan meerdere constructors hebben.

Voorbeeld

public class Puppy {
  public Puppy() { }
  public Puppy(String name) {
    // Deze constructor heeft één parameter, name.
  }
}

Java ondersteunt ook Singleton Classes waar je slechts één instantie kunt maken.

Let op – Er zijn twee typen constructors. We bespreken ze gedetailleerd in volgende hoofdstukken.

Een Object Maken

Een class levert de blueprints voor objecten. In Java wordt het new keyword gebruikt om objecten te maken.

Drie stappen:

  • Declaratie – Variabele declaratie met object type.
  • Instantiatie – new keyword creëert het object.
  • Initialisatie – new gevolgd door constructor call initialiseert het object.

Voorbeeld

public class Puppy {
  public Puppy(String name) {
    System.out.println("Passed Name is :" + name);
  }
  public static void main(String []args) {
    Puppy myPuppy = new Puppy("tommy");
  }
}

Output

Passed Name is :tommy

Instance Variabelen en Methodes Benaderen

Via aangemaakte objecten:

/* Eerst object maken */
ObjectReference = new Constructor();
/* Variabele aanroepen */
ObjectReference.variableName;
/* Methode aanroepen */
ObjectReference.MethodName();

Voorbeeld

public class Puppy {
  int puppyAge;
  public Puppy(String 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) {
    Puppy myPuppy = new Puppy("tommy");
    myPuppy.setAge(2);
    myPuppy.getAge();
    System.out.println("Variable Value :" + myPuppy.puppyAge);
  }
}

Output

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

Source File Declaratie Regels

Essentiële regels voor het declareren van classes, import en package statements:

  • Maximaal één public class per source file.
  • Meerdere non-public classes mag.
  • Public class naam = bestandsnaam + .java. Voorbeeld: public class Employee{} → Employee.java.
  • Als class in package: package statement moet eerste statement zijn.
  • Import statements tussen package statement en class declaratie. Geen package? Import is eerste regel.
  • Import en package gelden voor alle classes in het bestand. Niet mogelijk om per class te differentiëren.

Classes hebben verschillende access levels en typen: abstract, final, etc. Details volgen in access modifiers hoofdstuk. Java heeft ook speciale classes: Inner classes en Anonymous classes.

Java Package

Manier om classes en interfaces te categoriseren. Bij honderden classes/interfaces in een applicatie is categoriseren een must en maakt het leven makkelijker.

Import Statements

Als een fully qualified naam (package + class) gegeven is, kan de compiler de source code of classes vinden. Import statement geeft de juiste locatie voor de compiler.

Voorbeeld: import java.io.*; laadt alle classes in java_installation/java/io.

Een Eenvoudige Case Study

We maken twee classes: Employee en EmployeeTest.

Eerst Employee.java (public class):

import java.io.*;
public class Employee {
  String name; int age; String designation; double salary;
  public Employee(String name) { this.name = name; }
  public void empAge(int empAge) { age = empAge; }
  public void empDesignation(String empDesig) { designation = empDesig; }
  public void empSalary(double empSalary) { salary = empSalary; }
  public void printEmployee() {
    System.out.println("Name:"+ name);
    System.out.println("Age:" + age);
    System.out.println("Designation:" + designation);
    System.out.println("Salary:" + salary);
  }
}

Dan EmployeeTest.java met main methode:

import java.io.*;
public class EmployeeTest {
  public static void main(String args[]) {
    Employee empOne = new Employee("James Smith");
    Employee empTwo = new Employee("Mary Anne");
    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();
  }
}

Compileren en draaien:

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

Wat Volgt?

Volgende sessie: basis datatypes in Java en hoe ze gebruikt worden in applicaties.

Java

  1. C# Classes & Objects: Fundamenten voor Robuuste OOP
  2. C++ klassen & objecten: praktische gids voor object-georiënteerd programmeren
  3. C++ Friend Functies en Friend Classes: Toegangscontrole Beheersen
  4. Java-variabelen en literals: een uitgebreide gids
  5. Java klassen en objecten: een praktische gids
  6. Java's final-sleutelwoord begrijpen: variabelen, methoden en klassen
  7. Java instanceof operator: een uitgebreide gids
  8. Java abstracte klassen en methoden: een uitgebreide gids
  9. Java geneste en inner classes meesteren: typen, voorbeelden en best practices
  10. Java anonieme inner classes meesteren: definitie, syntax en praktische voorbeelden
  11. Java Singleton patroon uitgelegd: hoe veilig te implementeren en gebruiken