2017년 9월 15일 금요일

[01] OOP(Object Oriented Programming, 객체지향 프로그래밍)

[01] OOP(Object Oriented Programming, 객체지향 프로그래밍)

1. 객체 지향(콤포넌트, 부품)의 특징
   - 한번 개발자가 개발한 코드는 "적은 수정"으로 재사용이 가능하도록함.

   - 콤포넌트(완성된 소스)가 다른 콤포넌트와 결합하여 하나의 프로그램을 형성합니다.
     . A 프로그램 --> 모듈 --> 출력 --> 처리 종류
     . B 프로그램 --> 모듈 --> 출력 --> 처리 종류
                      │
                      ↓
                     (공통모듈)
     . A 프로그램 --> 콤포넌트 <-- b="" p="">       워드 패드  --> 파일 열기 <-- p="">  
   - OOP의 개념을 바탕으로 업무용 프로그램을 제작하면 관리비용이 절감될 수 있다.



Project type: Java Project
        name: oop




[02] 메소드
   - 메소드(함수)는 멤버 변수(데이터)를 조작하고 처리하는 역활을 합니다.

   - 2번이상 호출되는 로직이나 향후 호출될 가능성이 있는 로직은
     메소드의 대상이 됩니다.
    
   - 리턴값이 없는 메소드는 void(공허한, 비어있는) 형을 지정합니다.

   - 메소드가 받는 인수의 데이터 타입은 메소드를 호출하는 쪽과
     일치해야 합니다. 


1. 하나의 클래스에서 필드(변수)의 출력

[실행 화면]
객제지향
웹프로그램
개발프레임워크

>>>>> FieldTest.java
---------------------------------------------------------------------------------------
public class FieldTest {
  String java = "객체 지향";
  String jsp = "웹 프로그램";
  String spring = "개발 프레임워크(자동화 소스)";
 
  public static void main(String[] args) {
    FieldTest ft = new FieldTest();
    // ft: 객체명, new: 메모리 할당

    System.out.println(ft.java);
    System.out.println(ft.jsp);
    System.out.println(ft.spring);
   
    String summer="동해";
    System.out.println("summer: " + summer);
  }

}

---------------------------------------------------------------------------------------



2. 하나의 클래스에서 메소드 호출
   - public void print(){ ... } : 출력 메소드
   - public void line(){ ... }  : 라인 출력 메소드

[실행 화면]
──────────
* 국어: 80
* 영어: 90
* 총점: 170
* 평균: 85
──────────
* 국어: 95
* 영어: 100
* 총점: 195
* 평균: 97
──────────
* 국어: 60
* 영어: 70
* 총점: 130
* 평균: 65
──────────

>>>>> /src/Sungjuk1.java
---------------------------------------------------------------------------------------
public class Sungjuk1 {
  int kuk = 80; // 필드, 멤버 변수, 인스턴스 변수
  int eng = 90;
  int tot = 0; 
  int avg = 0; 
 
  public void print(){ // 메소드
    tot = kuk + eng;
    avg = tot / 2;
   
    System.out.println("* 국어: " + kuk);
    System.out.println("* 영어: " + eng);
    System.out.println("* 총점: " + tot);
    System.out.println("* 평균: " + avg);
  }
 
  public void line(){
    System.out.println("──────────");
  }
 
  public static void main(String[] args) {
    Sungjuk1 sj = new Sungjuk1();
   
    sj.line();
    sj.print();
   
    sj.line();
   
    sj.kuk = 95;
    sj.eng = 100;
    sj.print();
    sj.line();
   
    sj.kuk = 60;
    sj.eng = 70;
    sj.print();
    sj.line();
   
  }

}


---------------------------------------------------------------------------------------




3. 변수의 사용
   - public void total(){ ... }
   - public void point(){ ... }
   - public void print(){ ... }
   - public void line(){ ... }

[실행 화면]
영화명: Gravity <- p="" print="">성  인: 8000
학  생: 6000
합  계: 14000   <- p="" total="">포인트: 700     <- 5="" p="" point="">
>>>>> Movie.java

public class Movie {
  String movie = "그래비";  // 필드
  int price1 = 10000;
  int price2 = 8000;
  int tot = 0;
  int point = 0;
 
  public void total(){ // 합계 메소드
    tot = price1 + price2;
  }
 
  public void point(){ // 포인트 메소드
    point = (int)(tot * 0.05);
  }
 
  public void print(){ // 인쇄, 다른 메소드 호출 가능
    System.out.println("영화명: " + movie);
    System.out.println("성  인: " + price1);
    System.out.println("학  생: " + price2);
    total();
    System.out.println("합  계: " + tot);
    point();
    System.out.println("포인트: " + point);
  }
 
  public static void main(String[] args) {
    Movie movie = new Movie();
    movie.print();

  }

}




[03] 메소드로 데이터의 전달
     - 메소드가 실행될 때 처리할 데이터를 전달 받을 수 있습니다.

1. 메소드가 데이터를 전달받아 출력하는 메소드
   - public void print(String str){ ... }

[실행 화면]
1. 자바 개발자 과정
2. A
3. 1000
4. 10.5
5. false

>>>>> /src/TransferTest.java

public class TransferTest {
  public void printStr(String str){ // Call By value
    System.out.println("1. " + str);
  }
 
  public void printChar(char chr){
    System.out.println("2. " + chr);
  }
 
  public void printInt(int i){
    System.out.println("3. " + i);
  }

  public void printDouble(double d){
    System.out.println("4. " + d);
  }
 
  public void printBoolean(boolean bol){
    System.out.println("5. " + bol); 
  }
 
  public static void main(String[] args) {
    TransferTest tt = new TransferTest();
    tt.printStr("자바 개발자 과정");
    tt.printChar('A');
    tt.printInt(1000);
    tt.printDouble(10.5);
    tt.printBoolean(false);
  }

}




2. 메소드가 두개 이상의 데이터를 전달받아 출력하는 메소드
   - public void print(String str, int kuk){ ... }

[실행 화면]
자바 개발자 과정 A
자바 개발자 과정 A 1000
자바 개발자 과정 A 1000 10.5
자바 개발자 과정 A 1000 10.5 false

>>>>> /src/TransferTest2.java

public class TransferTest2 {
  public void print(String str, char chr){
    System.out.println(str + " " + chr);
  }

  public void print(String str, char chr, int i){
    System.out.println(str + " " + chr + " " + i);
  }

  public void print(String str, char chr, int i, double d){
    System.out.println(str + " " + chr + " " + i + " " + d);
  }

  public void print(String str, char chr, int i, double d, boolean bol){
    System.out.println(str + " " + chr + " " + i + " " + d + " " + bol);
  }
 
  public static void main(String[] args) {
    TransferTest2 tt = new TransferTest2();
    tt.print("자바 개발자 과정");
    tt.print("자바 개발자 과정", 'A');
    tt.print("자바 개발자 과정", 'A', 1000);
    tt.print("자바 개발자 과정", 'A', 1000, 10.5);
    tt.print("자바 개발자 과정", 'A', 1000, 10.5, false);
  }

}




[04] 콤포넌트 클래스의 분리
     - 자바는 기본적으로 클래스 분리 개발 및 실행 환경을 제공함.


1. 프로젝트를 새로 만들고 클래스를 분리하세요.

Project type: Java Project
        name: oop2


출처 : https://junghamin.blogspot.kr


댓글 없음: