TIL
OOP(Object-Oriented Programming)
whdvlf94
2020. 3. 2. 14:26
프로그래밍에서 필요한데이터를 추상화시켜상태(Field)와 행위(Method)가 결합한 형태의 객체를 만들고, 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법
※ [JAVA] 추상 클래스란?
1) 실체 클래스의 공통적인 부분(Field, Method)을 추출해 어느 정도 규격을 잡아놓은 추상적인 클래스
2) 실체성이 없고 구체적이지 않기 때문에 객체를 생성할 수 없다.
3) 실체 클래스와 상속 관계에 있다.
- 추상 클래스를 사용하는 이유
1. 실체 클래스의 공통적인 필드와 메서드를 미리 정의함으로써 유지보수성을 높이고 통일성을 유지할 수 있다.
2. 제공되는 필드와 메서드를 이용해 자신 만의 스타일대로 실체 클래스를 구현함으로써 시간을 절약할 수 있다.
3. 소스 수정 시 다른 소스의 영향도를 적게가져가면서 변화에는 유연하게 대응할 수 있다.
▶ OOP 장·단점
[장점]
1.코드 재사용 용이- 기존에 정의 되어 있는 클래스를 가져와서 사용할 수 있고, 상속을 통해 확장하여 사용 가능
2.높은 유지보수성- 수정이 필요한 경우, 해당 클래스 내부의 필드, 메서드만 변경하면 된다.
3.빠른 개발 속도- 클래스 단위로 모듈화를 시켜 개발할 수 있기 때문에 팀 단위의 프로젝트에서 보다 빠르고 효율적으로 개발이 이루어질 수 있다.
[단점]
1. 처리 속도가 절차 지향에 비해 상대적으로 느림
2. 객체가 많으면 용량이 커질 수 있음
3. 모듈화 설계 과정에 많은 시간과 노력이 필요
▶ 클래스, 객체, 인스턴스
- 클래스: 상태를 정의하는 필드(Field)와 생성자(Constructor) 그리고 동작을 정의하는 메서드(Method) 영역으로 나누어져 있다. 객체를 만들기 위한 설계도이다.
// Class
Class Dog {
// Field 영역
String name;
double weight;
// Constructor 영역
public Dog() { }
// Method 영역
void bark() {
System.out.println("bark!");
}
}
- 객체: 클래스에서 정의한 것을 토대로 실제 메모리상에 할당된 것으로 실제 프로그램에서 사용되는 데이터. 해당 설계도를 통해 만들어진 일종의 부품으로 객체를 만들기 위해서 객체 별 클래스가 필요하다.
// Dog 객체 생성, 변수명 dog1
Dog dog1 = new Dog();
//닷 연산자를 통한 접근, 인스턴스화
dog1.name = "puppy";
dog1.weight = 4.27;
//필드 값 출력
System.out.printf("이름: %s\n",dog1.name);
System.out.printf("무게: %.2fkg\n",dog1.weight);
※ 객체의 또 다른 표현은 인스턴스(Instance) 이다. 즉, 클래스로 객체를 만드는 것을 "인스턴스화" 라고 한다.
출력 예)
이름: puppy
무게: 4.27