Thursday, February 23, 2017

Java - OOP (Intro & Summary)

Java Programming
Summary(OOP)
1.  OOP Concept
Java သည် Object-Oriented ကို အခြေခံသော Programming Language တစ်ခုဖြစ်သည်။ OOP ဟုဆိုလျှင် အခြေခံအားဖြင့် Class, Object, Inheritance, Polymorphism, Encapsulation, Abstraction စသည့် သဘောတရားများအား လေ့လာရမည်ဖြစ်ပါသည်။
Java program သည် Class များဖြင့် ဖွဲ့စည်းထားပြီး Class များကို instance ယူထားသော Object များဖြင့် ဆက်သွယ်လုပ်ဆောင်သည်။
Class တစ်ခုသည် object များအတွက် ပုံစံကြမ်းတစ်ခုဖြစ်သည်။ ဥပမာအားဖြင့် မောင်မောင်ဆိုသည့် object သည် လူ ဆိုသည့် Class အမျိုးအစားထဲတွင်ပါဝင်သည်။ လူဖြစ်သည့်အတွက် လူတွင် ရှိရမည့် အချက်အလက် (state) နှင့် အပြုအမူ(behavior) တို့ ရှိသည်။ လူတစ်ယောက်၏ အချက်အလက် ဆိုရာတွင် အသားရောင်၊ အရပ်အမောင်း၊ လူမျိုး စသည်တို့ဖြစ်ပြီး အပြုအမူ ဆိုရာတွင် လူသည် အိပ်သည် စားသည် စကားပြောသည် လေ့လာသင်ယူသည် စသည်တို့ဖြစ်သည်။
မောင်မောင်ဆိုသည့် object သည် အသားဖြူသည် အရပ်ပုသည် မြန်မာလူမျိူးဖြစ်သည်။ မောင်မောင်သည် အိပ်သည် စားသည် စကားပြောသည် လေ့လာသင်ယူတတ်သည်။
စတီဗင်ဆိုသည့် object သည် အသားဖြူသည် အရပ်ရှည်သည် အင်္ဂလိပ်လူမျိုးဖြစ်သည်။ စတီဗင်သည် အိပ်သည် စားသည် စကားပြောသည် လေ့လာသင်ယူသည် အလုပ်လုပ်သည် စသဖြင့် လုပ်ဆောင်ချက်များလုပ်ဆောင်သည်။
လူဆိုသည့် အမျိုးအစား(Class) တူသော်လည်း object တစ်ခုနှင့် တစ်ခု အချက်အလက်နှင့် လုပ်ဆောင်ချက်က တူနိုင်သကဲ့သို့ တူချင်မှ တူပါမည်။
OOP သည် ထိုသဘောတရားပေါ်တွင် အခြေခံထားခြင်းဖြစ်သည်။
လက်တွေ့လောကတွင် object တစ်ခုတွင် state နှင့် behavior ရှိသကဲ့သို့ Programming တွင် Object တစ်ခုတွင် field နှင့် method ရှိသည်။ Class သည် object တစ်ခုတွင်ရှိသင့်သည့်  field နှင့် method များကို ပုံစံကြမ်းတစ်ခုအနေနှင့်သတ်မှတ်ပေးထားသည်။
ဥပမာ 2D Rectangle ၏ ဧရိယာကိုရှာသော program တစ်ခုကို ရေးသားရမည်ဆိုပါစို့။
Rectangle of Area = height of Rectangle * width of Rectangle


အထက်ပါ ဇယားတွင် ပြထားသည့်အတိုင်း Rectangle object များသည် တစ်ခုနှင့် တစ်ခု အရောင်၊ အလျား၊ အနံ မတူညီကြပေ။ သို့သော် Rectangle ဖြစ်သည့်အတွက် အလျားရှိသည် အနံရှိသည် ဧရိယာကိုရှာသောအခါတွင်လည်း တူညီသော ပုံသေနည်းကို သုံးကာ ရှာရသည်။
အထက်ပါ Rectangle object များအတွက် Rectangle Class တွင် field သတ်မှတ်ရမည်ဆိုလျှင် color, height, width ဖြစ်ပြီး method သတ်မှတ်ရမည်ဆိုလျှင်  Area() method ပင်ဖြစ်သည်။
အထက်ပါ ဥပမာအား java program တွင် ပုံဖော်ကြည့်ကြပါစို့
Example1. Create three object of Rectangle class and find their area respectively.
public class Rectangle {

       String color;

       double height;
       double width;
 

       public double Area(double h, double w){

             double a;
             a= h*w;
             return a;
       }
       public static void main(String [] args){
             double a1,a2,a3=0;
            

             Rectangle r1= new Rectangle();

             Rectangle r2= new Rectangle();
             Rectangle r3= new Rectangle();
            
             r1.color="Blue";
             r1.height=0.9;
             r1.width=0.75;
             a1=r1.Area(r1.heightr1.width);
            
             r2.color="Red";
             r2.height=0.5;
             r2.width=2;
             a2=r2.Area(r2.heightr2.width);
            
             r3.color="Green";
             r3.height=0.75;
             r3.width=1;
             a3=r3.Area(r3.heightr3.width);
            
             System.out.println("Area of Blue Rectangle "+ a1);
             System.out.println("Area of Red Rectangle "+ a2);
             System.out.println("Area of Green Rectangle "+ a3);
            
       }
}
 
Exercise 1.
Triangle object များအတွက် Class တစ်ခုတည်ဆောက်ပါ။ လိုအပ်သည့် instance variable နှင့် method သတ်မှတ်ပြီး Area ကို ရှာပါ။( Area of Triangle = ½ * b * h)


 
 
2.  Constructor
Class တိုင်းတွင် constructor တစ်ခုရှိပါသည်။ Constructor ကို object တစ်ခု စတင်တည်ဆောက်သည့်အချိန်တွင် အသုံးပြုသည်။ Constructor သည် Class အမည်နှင့်တူသည်။ Object ၏ field များအတွက် value initialization လုပ်သည့်အခါ သုံးသည်။
ထို object အတွက် Class တွင်ရှိသည့်   programmer က Constructor  ကို မတည်ဆောက်လျှင် Java Compiler မှ default constructor တည်ဆောက်ပါသည်။
ဥပမာ Rectangle Class ဥပမာတွင် r1,r2,r3 ဆိုသည့် object များကို အောက်ပါအတိုင်း တည်ဆောက်ခဲ့သည်။
Rectangle r1= new Rectangle();
             Rectangle r2= new Rectangle();
             Rectangle r3= new Rectangle();
 
r1, r2, r3 အတွင် field များတွင် တန်ဖိုးများ မထည့်လျှင် default အနေနှင့် color = null, height = 0.0, width =0.0 ဖြစ်နေမည်ဖြစ်သည်။

Rules for creating java constructor
  • Constructor name သည် Class name နှင့်တူရမည်။)
  • Constructor သည် return မပြန်ပါ

Types of java constructors
  • Default constructor (no-arg constructor)
  • Parameterized constructor

Default Constructor
What is the purpose of default constructor?
Object စတင်တည်ဆောက်သည့်အခါတွင် default values ပေးရန်အတွက်သုံးသည်။
Default constructor provides the default values to the object like 0, null etc. depending on the type.

Example of default constructor that displays the default values
class Student3{  
int id;  
String name;  
  
void display(){System.out.println(id+" "+name);}  
  
public static void main(String args[]){  
Student3 s1=new Student3();  
Student3 s2=new Student3();  
s1.display();  
s2.display();  
}  
}  
Java parameterized constructor
Parameters များရှိသော Constructor ကို parameterized constructor ဟုခေါ်သည်။ .
Why use parameterized constructor?
  • Objects များအတွက် မတူညီသော value များ assign လုပ်ပေးနိုင်အတွက်ဖြစ်သည်။ 
  • Example of parameterized constructor
In this example, we have created the constructor of Student class that have two parameters. We can have any number of parameters in the constructor. 

  • class Student4{  
    int id;  
    String name;  
      
    Student4(int i,String n){  
    id = i;  
    name = n;  
    }  
    void display(){System.out.println(id+" "+name);}  
   
    public static void main(String args[]){  
    Student4 s1 = new Student4(111,"Karan");  
    Student4 s2 = new Student4(222,"Aryan");  
    s1.display();  
    s2.display();  
   }  
}  
 
 
 
 
Constructor Overloading in Java
Constructor overloading is a technique in Java in which a class can have any number of constructors that differ in parameter lists.The compiler differentiates these constructors by taking into account the number of parameters in the list and their type.

  • Example of Constructor Overloading
class Student5{  
    int id;  
    String name;  
    int age;  
    Student5(int i,String n){  
    id = i;  
    name = n;  
    }  
    Student5(int i,String n,int a){  
    id = i;  
    name = n;  
    age=a;  
    }  
    void display(){System.out.println(id+" "+name+" "+age);}  
   
    public static void main(String args[]){  
    Student5 s1 = new Student5(111,"Karan");  
    Student5 s2 = new Student5(222,"Aryan",25);  
    s1.display();  
    s2.display();  
   }  
}  
 
3.  The this Keyword
·        Instance variable နှင့် method သို့မဟုတ် constructor အတွင်းရှိ local variable တို့ အမည်တူသောအခါတွင် this keyword ကို အသုံးပြုကာ ကွဲပြားအောင် ပြုလုပ်နိုင်သည်။
·        Constructor တစ်ခုမှ တစ်ခုသို့ ခေါ်သော အခါ အသုံးပြုသည်။
this keyword ကို instance method သို့မဟုတ် constructor အတွင်းတွင်သာ အသုံးပြုနိုင်သည်။

Example : Rectangle Class with Parameterized Constructor
public class Rectangle {
       String color;
       double height;
       double width;
      
       Rectangle(){
             this("White",0.5,0.5);
       }
       Rectangle(String color, double height, double width){
             this.color= color;
             this.height = height;
             this.width = width;
       }
       public double Area(double h, double w){
             double a;
             a= h*w;
             return a;
       }
      
       public static void main(String [] args){
             double a1,a2,a3,a4;
            
             Rectangle r1= new Rectangle("Blue",0.9,0.75);
             Rectangle r2= new Rectangle("Red",0.5,1);
             Rectangle r3= new Rectangle("Green",0.75,1);
             Rectangle r4=new Rectangle();
 
             a1=r1.Area(r1.height,r1.width);
             a2=r2.Area(r2.heightr2.width);
             a3=r3.Area(r3.heightr3.width);
             a4=r4.Area(r4.height, r4.width);
 
             System.out.println("Area of "+ r1.color +" Rectangle "+ a1);
             System.out.println("Area of " + r2.color + "Rectangle "+ a2);
             System.out.println("Area of "+r3.color +" Rectangle "+ a3);
             System.out.println("Area of "+r4.color +" Rectangle "+ a4);
}
4.  Inheritance
 
OOP တွင် Inheritance ဆိုသည့် သဘောတရားမှာ Class တစ်ခုတွင်ရှိသော field နှင့် method ကို အခြား Class တစ်ခုမှ အမွေဆက်ခံ နိုင်ခြင်း(သို့) ပိုင်ဆိုင်နိုင်ခြင်း ပင်ဖြစ်သည်။
သဘောတရားအားဖြင့် ဆိုရသော်  လူသည် သက်ရှိသတ္တဝါ အမျိုးအစားတွင်ပါဝင်သည်။ ထို့အပြင် တိရစ္ဆာန်သည်လည်း သက်ရှိသတ္တဝါ အမျိုးအစားတွင်ပါဝင်သည်။
သက်ရှိသတ္တဝါဟုဆိုရာတွင် အကြမ်းဖျင်းအားဖြင့် လက်ရှိသည်၊ ခြေထောက်ရှိသည်။ မျက်လုံးနှစ်ဖက်ရှိသည်။ နှာခေါင်းရှိသည်။ သက်ရှိသတ္တဝါသည် အိပ်သည် စားသည် ကစားသည်။
 
ထို့ကြောင့် လူ ၊ တိရစ္ဆာန် သည် သက်ရှိသတ္တဝါတွင်တည်ရှိသော State နှင့် behavior ကို အမွေဆက်ခံနိုင်သည်။
လူ နှင့် တိရစ္ဆာန်သည် သက်ရှိသတ္တဝါဆိုသည့် class ၏ Child Class ဖြစ်ပြီး သက်ရှိသတ္တဝါဆိုသည့် class သည် လူ နှင့် တိရစ္ဆာန် Class ၏ Super Class ဖြစ်သည်ဟုဆိုလိုနိုင်သည်။
 
ထို့အပြင် Child Class သည် ထပ်မံပြီး ကိုယ်ပိုင် state နှင့် behavior ကိုလည်း ဖြည့်စွက် သတ်မှတ်နိုင်သည်။ ဥပမာ အားဖြင့် လူတွင် ဝေဖန်ပိုင်းခြားနိုင်စွမ်းရှိသည့်ဦးနှောက်ရှိသည်။ လူသည် ပညာသင်ယူသည်။
 
Object- Oriented Programming တွင်လည်း အထက်ပါသဘောတရားအား အခြေခံကာ အခြေခံကျသော တူညီသည့် field and method များအတွက် statement များ အသစ်ထပ်မံရေးစရာမလိုအောင် Class တစ်ခုမှ အခြား Class တစ်ခုအား inheritance လုပ်ခွင့်ရှိသည့် feature ပါဝင်သည်။
 
Class တစ်ခုမှ Parent Class တစ်ခုအား အမွေဆက်ခံလိုလျှင် extends ဆိုသည့် keyword ကို အသုံးပြုသည်။



 
ဥပမာ Window တွင် ထည့်သွင်းထားသော Calculator ကို ပမာပြုလျှင် Standard Calculator ၊ Scientific Calculation များကို လုပ်ပေးနိုင်သော Scientific Calculator ၊ Programmer Calculator ၊ Statistic စသဖြင့် အမျိုးအစား အမျိုးမျိုးရှိသည်။  

 
Calculator အားလုံး အခြေခံ အပေါင်း အနှုတ် အမြှောက် အစား ဆိုသည့် လုပ်ဆောင်ချက်များလုပ်ဆောင်သည်။ ထိုတူညီသော လုပ်ဆောင်ချက်အတွက် Calculator တစ်ခုချင်းစီတိုင်းတွင် Coding ရေးစရာမလိုဘဲ inheritance feature သုံးကာ Coding ကို
public class Calculator {
       public int addition(int x, int y){
             return x+y;
       }
       public int subtraction(int x, int y){
             return x-y;
       }
       public int multiplication(int x, int y){
             return x*y;
       }
       public int division(int x, int y){
             return x/y;
       }
}
import java.lang.Math;
public class StandardCalculator extends Calculator {
       public double Modulus(double a, double b){
             return a%b;
       }
       public double SquareRoot(double a){
             return Math.sqrt(a);
       }
       public double AbsoluteValue(double a){
             return Math.abs(a);
       }
}

import java.lang.Math;
public class ScientificCalculator extends StandardCalculator {
       public double SinValue(double num){
             return Math.sin(num);
       }
       public double CosValue(double num){
             return Math.cos(num);
       }
       public double TangentValue(double num){
             return Math.tan(num);
       }
}
public class MainClass {

       public static void main(String[] args) {
             int a=10,b=20;
             Calculator c= new Calculator();
             StandardCalculator stdC= new StandardCalculator();
             ScientificCalculator sc= new ScientificCalculator();
            
             System.out.println(a + "+" + b + "=" + c.addition(a, b));
             System.out.println(a + "-" + b + "=" + stdC.subtraction(a, b));            
             System.out.println(a + "/" + b + "=" + sc.division(a, b));
            
             System.out.println(a + "%" + b + "=" + stdC.Modulus(a, b));
             System.out.println(a + "*" + b + "=" + sc.multiplication(a, b));
System.out.println("sin("+a+")=" + sc.SinValue(a));      System.out.println("abs("+a+")=" + sc.AbsoluteValue(a));

       }

}
Output:

10+20=30
10-20=-10
10/20=0
10%20=10.0
10*20=200
sin(10)=-0.5440211108893698
abs(10)=10.0

  •  
5.  The Super Keyword
·        Parent Class (Super Class) နှင့် Child Class (Sub Class) တို့တွင် variable name သို့မဟုတ် method name အား အတူတူပေးသောအခါ မည့်သည့် variable  မည်သည့် method က Super Class ၏ variable , method ဖြစ်သည်ကို ခွဲခြားနိုင်ရန် Super Keyword ကိုသုံးသည်။
·        Child Class မှ Parent Class ၏ Constructor ကို ခေါ်ယူလိုသောအခါတွင်လည်း super keyword ကိုသုံးသည်။
 
 
 
 
Example: Plain Shapes Class
Plain Shapes ဆိုသည့် Class အမျိုးအစားထဲတွင် Triangle, Square, Rectangle, Parallelogram တို့ပါဝင်သည်။
မည်သည့် Shape မဆို အခြေခံအားဖြင့် base(width) နှင့် height ရှိသည်။ Area ကိုရှာသောပုံသေနည်းလည်း ဆင်တူသည်။

public class PlainShapes {
       double w,h;
       PlainShapes()
       {
             this(1,1);
       }
      
       PlainShapes(double w, double h){
             this.w=w;
             this.h=h;
       }
       public double Area(double w, double h){
             return (w*h);
       }
      
}
public class PlainSquare extends PlainShapes {
      
       PlainSquare(){
              super();
             }
}
public class PlainParallelogram extends PlainShapes {
       PlainParallelogram(double a, double b){
             super(a,b);
             }
}
public class PlainTriangle extends PlainShapes {
       PlainTriangle(double a, double b){
             super(a,b);
             }
       public double Area(double b, double h){
             double a = (super.Area(b, h));
             return a/2;
       }
}
import java.util.Scanner;

public class MainClass {
       static double w,h;
       public static void GetWidthheight(){
            
            
             Scanner input = new Scanner(System.in);
             System.out.print("Enter Width:");
             w=input.nextDouble();
             System.out.print("Enter height:");
             h=input.nextDouble();
            
       }
       public static void main(String[] args) {
            
             GetWidthheight();
             PlainParallelogram pp= new PlainParallelogram(w,h);
             System.out.println("Area of Parallelogram is : " + pp.Area(w, h));
            
             GetWidthheight();
             PlainTriangle pt=new PlainTriangle(w,h);            
             System.out.println("Area of Triangle is : " + pt.Area(w, h));

              PlainSquare ps=new PlainSquare();
             System.out.println("Area of Square is : " + ps.Area(ps.w, ps.h));
             }
}

  • Exercise 2: အထက်ပါ example တွင်  Circle နှင့် Sector Shape Class တို့ကိုလည်း ထည့်သွင်းပါ။ Class တစ်ခုချင်းစီအတွက် object တည်ဆောက်ပြီး Area ကိုထုတ်ပြပါ။ 


 
6.  Overriding
Class A သည် Class B ၏ subclass ဖြစ်လျှင် Class B တွင်ရှိသော method ကို override လုပ်နိုင်သည်။ အထက်ပါ section တွင် ဖော်ပြခဲ့သော ဥပမာတွင်လည်း PlainTriangle Class သည် PlainShapes Class ၏ Area() method ကို override လုပ်ထားသည်ကို တွေ့မြင်နိုင်မည်။
Override လုပ်သည့်အခါတွင် superclass နှင့် same method name, same parameter, same return type ဖြစ်ရမည်။ Constructor အား override လုပ်ရျ်မရပါ။ method က final ဖြစ်နေလျှင် override လုပ်မရပါ

7.  Polymorphism
Polymorphism ဆိုသည့်သဘောတရားမှာ တူညီသော လုပ်ဆောင်ချက်ရှိသော်လည်း မတူညီသော လုပ်ရပ်များလုပ်ရခြင်းဖြစ်သည်။ Plain Shapes ဥပမာတွင် shape များအတွက် Area ရှာရမည့် လုပ်ဆောင်ချက်မှာ တူညီသည် သို့သော် shape ပေါ်တွင် မူတည်ပြီး တွက်ချက်ရမည့် ပုံသေနည်းများ ကွာခြားသွားနိုင်သည်။ ထိုသဘောတရားကို polymorphism ဟုခေါ်သည်။ method အား override လုပ်ခြင်းဖြင့် ထိုသဘောတရားကိုပုံဖော်နိုင်သည်။
ဥပမာ - ကြောင်ကို အသံထွက်ပါဟုပြောလျှင် ညောင် ညောင် ဟု အသံထွက်မည်။ ဘဲကို အသံထွက်ပါဟုပြောလျှင် ဂတ် ဂတ် ဟု အသံထွက်မည်။ အသံထွက်သည့် လုပ်ဆောင်ခြင်းတူသော်လည်း object ပေါ်မူတည်ကာ ကွဲပြားသော ရလဒ်ကို ရရှိမည်ဖြစ်သည်။

Example : Animal Sound
public class Animal {
 int numberofLeg;
 Animal()
 {
        this(4);
 }
 Animal(int numberofLeg){
        this.numberofLeg = numberofLeg;
 }

 public String Sound()
 {
        return "$%@#&^";
 }
}
public class Cat extends Animal {
Cat(){
       super();
}
public String Sound(){
       return "Meow";
}
}

public class Duck extends Animal{
Duck(int nofLeg){
       super(nofLeg);
}
public String Sound(){
       return "Queck";
}
}
public class MainClass {
public static void main(String[] args) {
            Animal a= new Animal();
             Cat c=new Cat();
             Duck d=new Duck(2);
             System.out.println("Animal sound " + a.Sound());
             System.out.println("Cat Leg " +c.numberofLeg +" ,Cat sound " + c.Sound());
             System.out.println("Duck Leg " +d.numberofLeg +" ,Duck sound " + d.Sound());
}
}

  •  
Exercise 3: အထက်ပါ Example တွင် ကြက် နှင့် နွား တို့အတွက် Class တည်ဆောက်ပြီး Sound() method ကို override လုပ်ပြပါ။ 
 
8.  Abstraction
c = a+b ဆိုသည့် statement သည် a နှင့် b ပေါင်းပြီး c ထဲသို့ ထည့်သည်ကို နားလည်လွယ်နိုင်သည်။ သို့သော် တကယ်တမ်း နောက်ကွယ်တွင် ထို statement လုပ်နိုင်အောင် လုပ်ရသည့် process သည် ရှုပ်ထွေးသည်။ သို့သော် programmer အနေနှင့် နောက်ကွယ်က အလုပ်များကို စဉ်းစားစရာမလိုဘဲ မည်ကဲ့သို့သုံးသည်ကိုသာသိလျှင် လုံလောက်သည်။
ထိုကဲ့သို့ အသုံးကိုသာသိပြီး အသေးစိတ် implementation ကို သိရှိစရာမလိုသည့်အခါ abstraction လုပ်ထားနိုင်သည်။
Class တစ်ခု abstract လုပ်လိုလျှင် abstract keyword သုံးရုံနှင့်ရနိုင်သည်။ abstract class တွင် abstract method တစ်ခုပါချင်မှပါမည်။ သို့သော် abstract method တစ်ခုပါဝင်သော Class ကို abstract class အဖြစ် ကြေငြာပေးရမည်။ Class တစ်ခုသည် abstract class ဖြစ်လျှင် တိုက်ရိုက် instantiation လုပ်ရျ်မရပါ။ သူ့အား inheritance ယူထားသော Class မှ တဆင့်သာ instantiation လုပ်ရျ်ရသည်။ abstract method ပါဝင်သော abstract class ကို inheritance ယူပါက abstract method အား implementation လုပ်ပေးရမည်ဖြစ်သည်။
 
public abstract class Animal {
 int numberofLeg;

 public abstract void Greet(String s);
 Animal()
 {
        this(4);
 }
 Animal(int numberofLeg){
        this.numberofLeg = numberofLeg;
 }

 public String Sound()
 {
        return "$%@#&^";
 }

}
public class Cat extends Animal {
Cat(){
       super();
}
public String Sound(){
       return "Meow";
}
public void Greet(String s){
       System.out.println("Cat greets "+ s);
}
}
public class Duck extends Animal{
Duck(int nofLeg){
       super(nofLeg);
}
public String Sound(){
       return "Queck";
}
public void Greet(String s){
       System.out.println("Duck greets "+ s);
}
}
public class MainClass {
           
 Cat c=new Cat();
             Duck d=new Duck(2);
             //System.out.println("Animal sound " + a.Sound());
             System.out.println("Cat Leg " +c.numberofLeg +" ,Cat sound " + c.Sound());
             System.out.println("Duck Leg " +d.numberofLeg +" ,Duck sound " + d.Sound());
             c.Greet(c.Sound());
             d.Greet(d.Sound());
}
}

  •  
Exercise 4: Plain Shpes example မှ Area() method အား Abstract method အဖြစ် ပြန်လည်ရေးသားပါ။ 
 
9.  Encapsulation
Encapsulation ကို တစ်နည်းအားဖြင့် data hiding ဟုလည်းခေါ်သည်။ inheritance လုပ်ထားသော subclass သည် superclass ပိုင်ဆိုင်သမျှ ပိုင်ဆိုင်နိုင်သည်။ သို့သော် field ကို ုprivate keyword ခံပြီး သုံးထားလျှင် ထို field ကို တိုက်ရိုက် မပိုင်ဆိုင်နိုင်ပေ။ ထို field ကို အသုံးပြုလိုလျှင် public method များဖြစ်သည် getter, setter method များဖြင့်သာ တဆင့်သုံးနိုင်သည်။
 
public class EncapTest{

       private String name;
       private String idNum;
       private int age;
      
       public int getAge(){
             return age;
       }
       public String getName(){
             return name;
       }
       public String getIdNum(){
             return idNum;
       }
       public void setAge( int newAge){
             age = newAge;
       }
       public void setName(String newName){
             name = newName;
       }
       public void setIdNum( String newId){
             idNum = newId;
       }
}

public class Student extends EncapTest{
private int mark;
       public String University;
       public int getMark(){
             return mark;
       }
       public void setMark( int mark){
             this.mark=mark;
       }
}
public class RunEncap{
       public static void main(String args[]){
      
       EncapTest encap = new EncapTest();
      
       encap.setIdNum("MIT001");
       encap.setName("James");
       encap.setAge(20);
      
       System.out.print("Name : " + encap.getName() + " Age : " + encap.getAge());
      
       Student s1= new Student();
       s1.setIdNum("MIT002");
       s1.setName("Ko Ko");
       s1.setAge(21);
      
       s1.University = "MIT";
       System.out.print("ID : "+s1.getIdNum() + " Name : " + s1.getName() + " Age : " + s1.getAge()+ " University :" +s1.University);
      
       }
}


  •  
Exercise 5: Employee Class တစ်ခု တည်ဆောက်ပြီး salary နှင့် company field ထည့်ပါ။ salary ဆိုသည့် field ကို encapsulation လုပ်ပါ။ company ကိုတော့ public လုပ်နိုင်သည်။  Employee Class သည်လည်း EncapTest Class ကို inheritance လုပ်ထားမည်။ main() method တွင် Employee Class အတွက် object တည်ဆောက်ပြီး information ထည့်ပါ။ 
 
10.           Interface
Implementation အသေးစိတ်မလုပ်ဘဲ method များအားစုစည်းထားသော အစုအဝေးဖြစ်သည်။ Interface အချင်းချင်း inheritance လုပ်နိုင်သည်။ interface ကို implement လုပ်လိုလျှင် implements keyword ကိုသုံးသည်။
Syntax:
public interface NameOfInterface
{
//Any number of final, static fields
//Any number of abstract method declarations\
}
interface AnimalInt {
public void eat();
public void travel();
}
public class MammalInt implements AnimalInt{
       public int noOfLeg;
       public void eat(){
             System.out.println("Mammal eats");
       }
       public void travel(){
             System.out.println("Mammal travels");
       }
      
       }
public class human extends MammalInt{
       String Name;
       String Gender;
       public void Study(){
             System.out.println("Human study");
       }
       public void Display(int nOfL){
             System.out.println("Name : " + Name +" Gender :" +Gender + " Number of Leg" + nOfL);
       }
}

public interface Reptile extends AnimalInt {
       public void Go();
}

public class Snake implements Reptile {
       public void Go(){
             System.out.print("Snake Crawls");
       }
       public void eat(){
             System.out.println("Snake eats");
       }
       public void travel(){
             System.out.println("Snake travels");
       }
}
public static void main(String[] args) {
             human h1=new human();
             MammalInt m = new MammalInt();
             Snake s=new Snake();
             m.eat();
             m.travel();
            
             h1.Name ="Mg Mg";
             h1.Gender ="Male";
             h1.noOfLeg = 2;
             h1.eat();
             h1.travel();
             h1.Display(h1.noOfLeg);
            
             s.eat();
             s.travel();
             s.Go();
}


No comments:

Post a Comment

Scratch Programming - မိတ်ဆက်   Scratch Programming ကို အသက် ၈ နှစ် ကနေ ၁၆ နှစ်ကြား ကလေးတွေ Coding လေ့လာဖို့ MIT Media Lab က develop လုပ်ထာ...