패키지

객체 지향 프로그래밍_기초개념 본문

Server-Side/Java

객체 지향 프로그래밍_기초개념

업단업업 2015. 8. 4. 16:04

객체 지향 프로그래밍


1. Object Oriented Programming

2. 절차 지향적 프로그래밍 방식은 데이터를 처리하는 방법에 중심으로 두고, 어떤 방법론으로 처리하는 것이 효과적인지, 효율적인지를 연구했던 방식이다.


3. 객체 지향적 프로그래밍 방식은 데이터 자신을 프로그램 처리의 대상으로 보고, 데이터 자신에게 처리 방법을 포함함으로써 독립적인 처리가 가능하도록 만든 프로그래밍 방법이다.

객체 지향 프로그래밍에서는 데이터가 독립적인 상태가 되도록 하기 위해서 클래스라는 형태로 만들게 된다.


클래스는 속성과 기능을 멤버로 구성하게 된다. 속성은 멤버변수, 기능은 메소드로 표현한다.

프로그램의 대상인 데이터를 클래스로 표현하고, 해당 클래스를 사용 가능한 상태인 인스턴스(객체화)로 만들어서 데이터 처리를 하게 된다.

클래스는 독립적이지만 다른 클래스와 조합을 해서 하나의 큰 프로그램을 운영하게 된다.



3. 클래스 기본형식


class 클래스이름 {


//멤버변수

private 자료형 변수명;

//멤버변수를 위한 getter, setter 메소드 등록

public void set변수명(외부 데이터) {

this.변수명 = 외부 데이터;

}

public 자료형 get변수명() {

return this.변수명;

}


//메소드

public 자료형 메소드이름(매개변수) {

//액션 코드

}


}



4. 클래스(class)를 사용하려면 객체화 시켜야 한다. 클래스가 객체화된 상태를 인스턴스(instance)라고 한다. 인스턴스로 만들어진 클래스는 참조주소를 통해서 접근하게 된다.


클래스이름 변수 = new 클래스이름();


형태의 명령을 이용해서 인스턴스를 생성한다.


클래스는 사용자가 인스턴스 생성 명령을 실행할 때마다 메모리에 독립적인 인스턴스가 생성된다. 각각의 인스턴스는 메모리 내에서는 독립적인 상태가 된다.


//Printer.java

package com.test;


public class Printer {

private int ink = 0;

public void setInk(int ink) {

this.ink = ink;

}

public void print(String msg) {

//인쇄 고유 기능 실행

if (ink > 0) {

System.out.println(msg);

--ink;

} else {

System.out.println("잉크가 부족합니다.");

}

}


}



//Main.java

package com.test;


public class Main {


public static void main(String[] args) {


Printer p = new Printer();

p.print("테스트 인쇄1"); //X

p.setInk(5); 

p.print("테스트 인쇄2"); //O

p.print("테스트 인쇄3"); //O

p.print("테스트 인쇄4"); //O

p.print("테스트 인쇄5"); //O

p.print("테스트 인쇄6"); //O

p.print("테스트 인쇄7"); //X

}


}




예를 들어,

마카보드를 클래스로 표현하려면, 마카보드의 속성과 기능을 분석해야 한다. 

마카보드의 속성->색상

마카보드의 기능->쓰기


속성과 기능을 클래스 표현에서 멤버변수와 메소드(getter, setter 포함)로 표현한다.


//MarkerBoard.java

package com.test;


//마커보드 데이터를 클래스로 표현합니다.

public class MarkerBoard {

//멤버변수 - 객체의 속성(상태값 저장용 변수)

private String color;

//멤버변수와 외부의 의사소통을 위한 전용 메소드

//getter, setter 메소드 등록

public void setColor(String color) {

this.color = color;

}

public String getColor() {

return this.color;

}

//메소드(기능) 정의

public void write(String msg) {

System.out.println(msg);

}


}




마카보드 클래스를 인스턴스로 만들려면 아래와 같이 main() 메소드 내에서 인스턴스 생성 명령을 실행합니다.

//Main.java

package com.test;


import java.awt.Color;


public class Main {


public static void main(String[] args) {

//클래스에 대한 인스턴스 생성 과정(객체화)

MarkerBoard mb = new MarkerBoard();

//setter 메소드를 이용한 객체의 상태값 변경

mb.setColor(Color.red.toString());

//해당 객체의 기능(write) 호출

mb.write(String.format("객체 지향 프로그래밍 테스트!(%s)"

, mb.getColor()));


}


}




Comments