본문 바로가기
자바

자바 개념정리 객체지향이란

by y00ns00 2020. 5. 27.

OOP (객체지향 프로그래밍) (중요)
객체지향 프로그래밍은 컴퓨터 프로그래밍 패러다임(견해, 사고법)의 하나로, 프로그래밍에서 필요한 데이터를 추상화 시켜서 상태(속성, 어트리뷰트)와 행위(메서드)를 가진 객체 로 만들고, 그 객체간의 상호작용을 통해 로직을 구성하는 방법.

  • 장점
    • 다른 클래스를 가져와 사용할 수 있고, 상속받을 수 있어 코드의 재사용성 증가
    • 절차지향보다 유지보수가 간단
    • 클래스 단위로 모듈화가 가능하여, 대형 프로젝트에 적합
  • 단점
    • 처리속도가 상대적으로 느리다.
    • 객체가 많으면 용량이 커진다.
    • 설계시 많은 노력과 시간이 필요하다.

 

6가지 특징

  • 클래스
    현실 세계의 객체를 추상화시켜, 속성과 메서드로 정의한 것 (논리적 개념) 즉 클래스를 정의해 높은것
  • 인스턴스
    클래스에서 정의한 것을 토대로 만든 실제 메모리상에 할당된 것, 실제 데이터 즉 클래스를 인스턴스화
  • 추상화
    객체지향 관점에서 클래스를 정의하는 것, 불필요한 정보 외 중요한 정보만 표현함으로써 공통의 속성과 기능을 묶어 이름을 붙이는 것.
  • 캡슐화
    코드를 수정없이 재활용 하는 것을 목적으로 함. 클래스라는 캡슐에 기능과 특성을 담아 묶는다. 목적을 기준으로 묶는다.
    은닉화와의 차이 - 은닉화는 캡슐화의 일부라고 볼 수 있으며, 목적으로 묶인 캡슐 안을 사용자는 볼 수 없다는 것이 은닉화.
  • 객체의 속성(data fields)과 행위(메서드, methods)를 하나로 묶고,실제 구현 내용 일부를 외부에 감추어 은닉한
  • 상속
    클래스로부터 속성과 메서드를 물려받는 것을 말함. 다른 클래스를 가져와서 수정할 일이 있다면, 그 클래스를 직접 수정하는 대신 상속을 받아 변경하고자 하는 부분만 변경
  • 다형성

다형성

 

프로그램의 문맥에 따라 적당한 연산자나 메소드를 골라 쓸 수 있게 함 - 각 객체(Object)가 동일한 메세지나 이벤트에 대해서 다르게 반응, 행동하는 능력 . 같은 연산에 대해서도 서로 다른 클래스들이 다른 동작을 할 수 있는 능력

 

오버라이딩 메소드 오버라이딩,(method overriding) 

상위 클래스에서 정의된 변수메소드의 내용을,

     - 하위 클래스에서 변경하여 재정의하는 것

새롭게 재정의하여, 상위 클래스 수행 기능과는 다른 기능을 수행케 하는 것      - , 변수메소드의 내용을 변경할 수 있음    

- , 동일한 메소드 호출에도 각 객체 마다 다른 행동이 가능     - 또한, 자식 클래스는 새로운 클래스 역할도 가능

 

오버로드

같은 함수이름을 가지고있으면서 매개변수 타입 , 개수 ,리턴타임등의 특징이 다른게 사용할수 있다.

오버로딩, 오버라이딩 비교

  - 오버라이딩(Overriding) : 상속 관계에서 만 가능    

  - 오버로딩(Overloading)  : 동일 클래스 내 또는 상속 관계 둘 다 가능

 

  • OOP의 5가지 법칙 (SOLID)
    • Single Responsibility Principle, 단일 책임 법칙
      각 클래스는 목적을 하나씩만 가지고 그에 대한 책임을 져야 한다.
    • Open Close Principle, 개방 폐쇄 법칙
      각 클래스는 클래스에 대한 수정을 폐쇄하고, 확장에 대해 개방해야 한다.
      즉 클래스를 수정해야 한다면 그 클래스를 상속, 즉 확장하여 수정한다.
    • Liskov Substitusion Principle, 리스코프 치환 법칙
      자식 클래스를 사용 중일때, 거기에 부모 클래스로 치환하여도 문제가 없어야 한다.
    • Interface Segreation Principle, 인터페이스 분리 법칙
      각 행위에 대한 인터페이스는 서로 분리되어야 한다.
      핸드폰을 예로 들면, 전화를 하는데 핸드폰 카메라가 방해가 되면 안된다는 말.
    • Dependency Inversion Principle, 의존성 역전 법칙
      상위 클래스가 하위 클래스에 의존하면 안된다는 법칙. 즉 기본적인 공통되는 속성을 하위 클래스에 의존하면 안된다.
  • AOP (관점지향 프로그래밍)
    스프링 프레임워크의 핵심 요소 중 하나. 비즈니스 로직과 공통 모듈로 분리하고, 핵심 로직 사이사이에 공통 모듈을 잘 끼워 넣는 것을 말함. 이때 공통 모듈을 코드 밖에서 설정된다는 것이 핵심. 인증, 로깅, 트랜잭션 처리에 용이.

'자바' 카테고리의 다른 글

Exception 과 Error  (0) 2023.06.08
HashMap과 LinkedHashMap  (0) 2021.05.15
프로세스와 스레드  (0) 2020.06.09
자바 collection  (0) 2020.05.27
자바 개념 - 자바의 특징  (0) 2020.05.27

댓글