Notice
Recent Posts
Recent Comments
Link
250x250
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Tags
more
Archives
Today
Total
관리 메뉴

거인의 코딩일지

[기술면접 대비]객체지향이란?? 본문

기본이론

[기술면접 대비]객체지향이란??

코딩거인 2023. 7. 13. 13:45
728x90
객체지향 프로그래밍  ==  OOP(Object Oriented Programming)



인간중심적 프로그래밍 패러다임 이라고 할 수 있다.
즉! 현실 세계를 프로그래밍으로 옮겨와 프로그래밍 하는 것을 이야기 한다. 현실 세계의 사물들을 객체라고 보고, 그 객체로부터 개발하고자 하는 애플리케이션에 필요한 특징들을 뽑아와 프로그래밍 하는 것이다.
-- 이것을 추상화라고 한다.

다시 정리하자면

OOP 란?

프로그래밍에서 필요한 데이터를 추상화 시켜 상태와 행위를 가진 객체로 만들고 그 객체간의 상호작용을 통해 로직을 구성하는 방법을 의미한다.

▶ 장점
    - 다른 클래스를 가져와 사용할 수 있고, 상속받을 수 있어 코드의 재사용성 증가
    - 자주 사용되는 로직을 라이브러리로 만들어두면 계속해서 사용할 수 있어 신뢰성 확보 가능
    - 클래스 단위로 모듈화가 가능하여, 대형프로젝트에 적합
    - 객체 단위로 코드가 나눠져 작성되기 때문에 디버깅이 쉽고 유지보수가 용이
▶ 단점
    - 처리속도가 상대적으로 느림
    - 객체가 많으면 용량이 커짐
    - 설계시 많은 노력과 시간이 필요
객체지향의 특성


1. 캡슐화(Encapsulation) : 코드를 수정없이 재활용 하는 것을 목적으로 함 클래스라는 캡슐에 기능과 특성을 담아 묶는다(목적을 기준)

2. 상속 (Inheritance): 클래스로부터 속성과 매서드를 물려받는것을 말함, 다른 클래스를 가져와서 수정할 일이 있다면,
              그 클래스를 직접 수정하는 대신 상속을 받아 변경하고자 하는 부분만 변경

3. 추상화(Abstration) : 객체지향관점에서 클래스를 정의하는 것, 불필요한 정보 외 중요한 정보만 표현함으로써
                 공통의 속성과 기능을 묶어 이름을 붙이는것

4. 다형성(Polymorphism) : 하나의 변수명이나 함수명이 상황에 따라 다르게 해석될 수 있음, 대표적인 다형성이 오버라이딩, 오버로딩

 

객체지향프로그래밍(OOP)의 5가지 설계 원칙

1. SRP(Single Responsibility Principle) : 단일 책임 원칙
    - 클래스는 단 하나의 책임(목적)을 가지고, 그에대한 책임을 져야한다.

2. OCP(Open Close Principle) : 개방 - 패쇄 원칙
    - 확장에는 열려 있어야 하고, 변경에는 닫혀 있어야한다.
    - 즉, 클래스를 수정해야 한다면 그 클래스를 상속(확장)하여 수정한다.

3. LSP(Liskov Substitution Principle) : 리스코프 치환 원칙
    - 상위 타입의 객체를 하위 타입의 객체로 치환해도 상위 타입을 사용하는 프로그램은 정상적으로 동작해야한다
    - 즉, 자식 클래스를 사용 중일 때, 거기에 부모 클래스로 치환하여도 문제가 없어야함.

4. ISP(Interface Segregation Principle) : 인터페이스 분리 원칙
    - 각 행위에 대한 인터페이스는 서로 분리되어야 한다.
    - ex) 핸드폰으로 전화를 하는데 핸드폰 카메라가 방해가 되면 안된다.

5. DIP(Dependecy Inversion Principle) : 의존 역전 원칙
    - 상위 클래스가 하위 클래스에 의존하면 안된다는 법칙.
    - 즉, 기본적인 공통되는 속성을 하위 클래스에 의존하면 안된다.

[참고 블로그]

https://backendcode.tistory.com/160#article-3--%E2%96%B6-oop%EC%9D%98-5%EA%B0%80%EC%A7%80-%EC%84%A4%EA%B3%84-%EC%9B%90%EC%B9%99-(solid) 

 

[IT 기술 면접] OOP(객체 지향 프로그래밍) 이란?

2022년 5월 24일에 6개월 국비 교육과정을 수료하였다. 일주일 간 휴식 시간을 보내고, 오늘부터 기술 면접을 준비하고자 한다. 하루에 2~3개씩 정리해서 포스팅 하기 Java 개발자 기술 면접 단골 질

backendcode.tistory.com

 

728x90