데브코스 W2D2

코끼릭·2022년 3월 22일
0

TIL

목록 보기
2/36

클래스, 인스턴스, 객체

클래스는 객채가 공통적으로 가진 특성과 기능을 표현한 객체에 대한 설계도이다. 객체는 구현할 대상으로 모든 인스턴스를 대표하는 의미를 가진다. 인스턴스는 클래스를 바탕으로 구현된 구체적인 실체로 메모리가 할당된 객체를 의미한다.

참고 링크

객체지향의 특징

  • 캡슐화
    속성과 속성을 처리하는 메소드를 하나로 묶은 것으로 사용자는 속성에 직접 접근할 수 없고 메소드를 통해서만 속성을 사용할 수 있는 것을 의미한다. 정보 은닉 보장완전한 기능을 수행할 수 있는 단위인 것이 특징이다.

  • 상속
    추상과 구체의 관계일 때 하위의 구체적인 클래스가 상위의 추상적인 클래스을 상속받음으로써 코드의 재사용성을 가능하게 했다. 주의해야 되는 점은 공통된 기능을 여러 객체에서 전달하고 싶을 때 상속을 하면 안된다.

  • 추상화
    구현하는 객체의 속성에서 중요한 정보만을 남겨놓고 중심으로 간소화하는 것을 의미한다.

  • 다형성
    하나의 부모 클래스를 상속한 자식 클래스는 오버라이딩과 부모 클래스 타입의 참조 변수를 통해 하나의 동일한 메소드 호출에서 각 자식 클래스만의 다양한 기능 수행이 가능한 것을 의미한다.

    + abstract, interface

    abstract 클래스는 최소 1개의 메소드가 오버라이딩을 해야 되는 클래스이고 인터페이스 클래스는 모든 메소드가 오버라이딩을 해야되는 클래스이다.

SOLID

프로그래밍은 요구사항이 빈번하게 변경되면서 코드를 수정하는 일이 계속 발생되기 때문에 코드가 읽기 쉽고 유지보수와 확장이 용이한 형태를 유지해야 한다. 따라서 이러한 형태로 개발을 지속하기 위해 코드 리팩토링 지침으로 사용되는 주 원칙 5가지가 SOLID 원칙이다.

  • Single Responsibility
    하나의 클래스는 하나의 기능을 수행해야 한다. 단일 책임 원칙을 지킴으로써 코드에 대한 이해가 쉬워지면서 유지보수가 쉽고 하나의 기능 단위는 코드의 재사용성을 높일 수 있다.

  • Open-Closed
    클래스의 추가 기능에는 열려있어야 되고 기존 기능에는 닫혀있어야 한다. 추가 기능의 경우 상속을 통해 구현될 수 있다. 추가 기능을 작성할 때는 기존 클래스에 대한 수정이 없도록 해야 한다.

  • Liskov Substitution
    구체 클래스가 추상 클래스를 치환해서 사용해도 문제가 없어야 한다는 원칙으로 결국 구체 클래스는 추상 클래스가 정의한 규칙을 위배하지 않는 범위에서 구현을 해야 한다.

  • Interface Segregation
    사용자가 이용하지 않는 메소드에 의존해서는 안되는 원칙으로 SRP을 지킬 수 있도록 도와준다.

  • Dependency Inversion
    클래스는 추상 클래스에 의존해야 되고 구체 클래스에 의존하면 안된다. 구체적인 구현은 빈번하게 수정되기 때문에 기존 세부 구현에 의존하는 관계가 아닌 변화하지 않는 추상적인 큰 흐름에 의존해서 변화하지 않게 해야 한다.

profile
ㅇㅅㅇ

0개의 댓글