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, 의존성 역전 법칙
상위 클래스가 하위 클래스에 의존하면 안된다는 법칙. 즉 기본적인 공통되는 속성을 하위 클래스에 의존하면 안된다.
- Single Responsibility 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 |
댓글