Lonely Snowman
 

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

객체 지향 프로그래밍이 뭔가요?

기능보다 객체 중심으로 프로그래밍하는 것입니다.

상속, 캡슐화, 다형성 등의 특징이 있습니다.

 

 

객체 지향 프로그래밍(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가지 특징도 알아보며 마무리하겠습니다.

  1. 클래스 + 인스턴스
  2. 추상화
  3. 캡슐화
  4. 상속
  5. 다형성

 

 

 

 

 

참고

https://www.youtube.com/watch?v=cg1xvFy1JQQ

https://jeong-pro.tistory.com/95

 

객체 지향 프로그래밍이 뭔가요? (꼬리에 꼬리를 무는 질문 1순위, 그놈의 OOP)

객체 지향 프로그래밍(Object Oriented Programming) 여러 소프트웨어 관련 IT기업 신입사원 기술면접에서 면접자들 긴장을 풀어줄 겸 워밍업으로 자주 나오는 질문이다. "객체 지향 프로그래밍에 대해

jeong-pro.tistory.com