객체 지향 프로그래밍이 뭔가요?
기능보다 객체 중심으로 프로그래밍하는 것입니다.
상속, 캡슐화, 다형성 등의 특징이 있습니다.
객체 지향 프로그래밍(OOP)
프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법입니다.
필요한 여러 데이터를 하나하나 각각 지정해주고 사용한다면 중복도 많고 오타 날 수도 있고 많은 문제가 있습니다.
또한 변경이 필요할 때는 각 데이터에 다 일일이 수정해줘야 하는 불편함도 생깁니다.
하지만 객체 지향 프로그래밍을 사용한다면 클래스라는 틀을 정해두고(데이터를 추상화 시킴) 각 객체들을 구현해 주면 이런 문제를 해결할 수 있습니다. 수정도 클래스에서 수정해 주면 됩니다. 구현체들은 해당 클래스 타입의 구현체니까 각각 수정할 필요가 없다는 것이죠. 유지보수가 쉽고 재사용이 편리하게 됩니다.
또한 아래처럼 getter setter를 이용해서 속성 정보를 직접 변경할 수 없도록 할 수 있습니다.
예제 코드
public class Member { // Member 틀 만들기
// 프로퍼티 (상태)
private String name;
private int age;
// getter setter 메서드 (행위)
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
public class Test {
public static void main(String[] args) {
// Member 틀로 구체적인 데이터 만들기
Member member1 = new Member(); // member1 인스턴스 생성
Member member2 = new Member(); // member2 인스턴스 생성
String name = "이창섭";
int age = 34;
member1.setName(name); // member1의 이름 세팅
member1.setAge(age); // member1의 나이 세팅
name = "서은광";
age = 35;
member2.setName(name); // member2의 이름 세팅
member2.setAge(age); // member2의 나이 세팅
System.out.println("member1 : " + member1.getName() + ", " + member1.getAge()); // member1 : 이창섭, 34
System.out.println("member2 : " + member2.getName() + ", " + member2.getAge()); // member2 : 서은광, 35
}
}
OOP의 특징
정보처리기사 공부할 때 너무 많이 본 5가지 특징도 알아보며 마무리하겠습니다.
- 클래스 + 인스턴스
- 추상화
- 캡슐화
- 상속
- 다형성