객체 지향의 특징

zeze·2023년 7월 24일
0

study

목록 보기
1/10

객체 지향이란?

  • 어떤 개념에 대한 자료형과 함수를 객체 형태로 함께 묶어서 관리 → 가능한 모든 물리적, 논리적 요소를 객체로 만드는 것!
  • 각각의 객체메시지를 주고받고, 데이터 처리 가능 → 객체간의 독립성 → 중복된 코드 양 감소 → 유지보수 용이
  • 객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용됨
  • 특징 : 추상화, 캡슐화, 상속, 다형성

객체 지향의 특징 4가지

1. 캡슐화

  • 외부에서 접근하지 못하도록 private으로 감싸서 값을 은닉하는 것
  • 높은 응집도와 낮은 결합도를 유지하여 한 곳에 변화가 일어나도 다른 곳에 미치는 영향을 최소화
public class Animal{
	private String name;
   
    public String getName(){
    	return name;
    }
    
    public void setName(String name){
    	this.name = name;
    }
}

2. 추상화

  • 공통적인 특성을 파악하여, 하나의 묶음으로 만들어내는 것 -> 객체의 공통적인 특징을 추출하여 정의하는 것
  • 예시) 자동차 -> 아반테, 소나타, ... 등등
public interface Animal{
		void eat();
        void say();
}
public class Dog implements Animal{
		@Override
        public void eat(){
        	System.out.println("얌얌");
        }
        
        @Override
        public void say(){
	        System.out.println("멍멍");
        }
}

public class Cat implements Animal{
		@Override
        public void eat(){
        	System.out.println("얌얌");
        }
        
        @Override
        public void say(){
	        System.out.println("냐옹");
        }
}

3. 다형성

  • 같은 이름의 메서드가 클래스 혹은 객체에 따라 다르게 동작하도록 구현하는 것 -> 코드 중복 줄임
  • ex) 오버라이딩, 오버로딩 -> 추상화 예시 참고!

4. 상속성

  • 부모 클래스의 속성과 기능을 자식 클래스가 상속 받아 이용할 수 있음
  • extends를 이용
  • is-a 관계 -> 하위 객체 is a 상위 객체
public class Animal{
	String name;
    int age;
    
    void eat(){
    	System.out.println("냠냠");
    }
    void say(){
    	System.out.println("멍멍");
    }
}
public class Dog extends Animal{
	
    void walk(){
    	System.out.println("산책");
    }
}
public class Cat extends Animal{
	
    // 메서드 재정의 -> 오버라이딩
    @Override
    void say(){
    	System.out.println("멍멍");
    }
}

1개의 댓글

comment-user-thumbnail
2023년 7월 24일

잘 읽었습니다. 좋은 정보 감사드립니다.

답글 달기