20150911
자바 객체지향 프로그래밍(Java Object-oriented Programming)
자바는 객체지향 언어 입니다. 객체지향 언어는 코드의 중복을 줄이고 재사용성은 높여 프로그램의 개발과 유지보수 시간과 비용을 줄여줍니다.
앞으로 자바를 공부해 나갈때 재사용성, 유지보수, 중복제거 를 기억하시면 자바를 이해하는데 도움이 되겠죠
자바의 역사나 사전적인 정의는 넘어가도록 할게요.
클래스와 객체
우선 클래스와 객체 입니다.
클래스는 설계도 도면(붕어빵틀, 건물 설계도) 이라고 할 수 있고 객체는 설계도로 만들어진 객체(사물-붕어빵, 자동차, 책상) 라고 할 수 있습니다.
예를 들어 붕어빵틀이 있으면 붕어빵틀 하나로 여러개의 붕어빵을 만들 수 있는 것처럼 하나의 클래스로 여러개의 객체를 만들어 사용하게 됩니다.
객체와 인스턴스
객체는 여러 속성과 기능을 가지고 있습니다.
우선 속성과 기능이 뭐냐 하면 속성은 명사 라고 생각하시면 돼요. 그리고 기능은 동사라고 생각하세요.
사람을 예로 든다면
속성- 키, 이름 , 주민등록번호, DNA
기능- 일어나기, 앉기 , 밥먹기, 공부하기, 대화하기
프로그래밍에서는
속성- int a =1 ; String name="yichi";
기능- 더하기, 빼기, 곱하기 , 평균값 구하기 처럼 어떤 기능을 해주는 행위(behavior), 함수(function), 메서드(method) 라고 합니다.
속성과 기능을 부르는 용어들이 다양합니다.
속성 - 멤버변수(member variable), 특성(attribute) ,필드(field), 상태(state)
기능 - 메서드(method), 행위(behavior), 함수(function)
이런 다양한 용어들로 속성과 기능을 말하는데 같은 의미라는걸 아시면 됩니다. 그리고 객체가 가지고 있는 속성과 기능을 합쳐서 멤버라고 부릅니다.
그럼 직접 사람 클래스를 만들어 보면 다음과 같습니다.
public class Man { //사람의 속성 int height; //키 int age; //나이 //Man 기능(함수) void growth() { ++age; } //성장(growth)함수는 나이가 1증가하는 기능(함수) void eat() { ++height; } //먹다(eat)함수는 키가 1 증가 하는 기능(함수) }
위 코드에서 처럼 속성은 값 들을 저장하고 함수는 어떤 특정한 기능을 해주죠
클래스를 만들었으니 인스턴스를 생성해 볼게요.
클래스명 변수명; //클래스 객체를 참조하기 위해 참조변수를 선언해 주고
변수명 = new 클래스명(); //래스 객체를 생성 후 객체의 주소를 참조변수에 저장합니다.
Man m;
m = new Man();
public class Man { //사람의 속성 int height; int age; //Man 기능(함수) void growth() { ++age; } void eat() { ++height; } } class ManTest { public static void main(String[] args) { Man m; //Man인스턴스(객체)를 참조하기 위해 변수 m을 선언합니다. m = new Man(); //Man 인스턴스(객체)를 생성합니다. m.age = 20; //Man 인스턴스 멤버변수 age를 20로 합니다. m.growth(); //Man 인스턴스 메서드(기능) growth()를 호출 합니다. //변수값 입력과 growth() 함수가 잘 실행 되었는지 출력해 본다. System.out.println("현재 사람의 나이는" + m.age + "입니다."); } }
위에 결과값은 21이 출력 됩니다.
이러한 방식으로 인스턴스(객체)를 만들고 사용 할 수 있습니다.
'프로그래밍 > java' 카테고리의 다른 글
java 메서드(method) (0) | 2015.09.12 |
---|---|
Java 변수(Variables) (0) | 2015.09.12 |
[Java] 자바 주석 사용법 (java comment) (0) | 2015.09.07 |
자바(Java Programming Language) (0) | 2015.09.06 |
Java 시작(Starting Java) (0) | 2015.09.06 |