OOP

sunriseGong·2020년 10월 28일

OOP란 무엇입니까?

사람이 세상의 방대한 정보를

효율적으로 혼선없이 사용하기 위해서

카테고리로 분류하고 정리하는 것처럼

객체지향은 데이터를 정의하고 분류해서 객체로 만들고

더 나아가 그 생성된 객체들을 활용해

프로그래밍 하는 방법이라고 생각합니다.

Object란 무엇입니까?

데이터의 특성이나 속성들을 파악해서 정의한 값인 ‘프로퍼티’와

그 데이터에 있어서 필요한 기능들을 구현한 값인 ‘메소드’를

키 값 쌍의 형태로 정리한 집합이라고 생각합니다.

Procedural Programming 과 OOP의 차이점은 무엇인가요?

절차적 프로그래밍은

프로그래밍 절차가 진행됨에 따라

변화하는 데이터를 기준으로 함수를 생성하기 때문에

규모가 커질수록 진행된 함수들끼리

충돌의 가능성이 높아지는 등의 한계가 생깁니다.

이러한 문제를 개선한 것이 객체지향 입니다.

객체지향은

자동차가 각기능을 수행하는 부품들로 이루어져 있는 것처럼

기능에 따라 부품처럼 함수들을 만들고

이 함수라는 부품들을 필요에 따라 결합하여

목표로 하는 프로젝트를 만드는데

각각의 함수가 기능이 다르기 때문에 충돌의 가능성이 낮고

뿐만 아니라 만들어 놓은 함수들을 재사용할 수도 있는점이

절차적프로그래밍과 의 차이점이라고 생각합니다.

OOP의 특징이 뭔가요?

캡슐화 (Encapsulation)
상속 (Inheritance)
추상화(abstraction)
다형성 (Polymorphism)
과 같은 4가지 특징이 있습니다.

캡슐화 (Encapsulation)에 대해서 설명해보시겠어요?

절차적프로그래밍처럼

변수나 함수가 코드 전체에 걸쳐 중구난방으로 있으면

코드를 재활용하거나

유지 보수, 확장하는 것이 힘들어지기 때문에

관련된 데이터를 한 곳에 묶어서 분류하는 것을 캡슐화라고 생각하고요.

캡슐화의 특징으로는

외부에서 내부로 접근해 내부의 변수를 변경하기 힘들다는점과

캡슐화가 이루어지면 언어에 따라서

객체 내부의 정보가 숨겨지는 ‘은닉’이라는

특징이 있는 것으로 알고 있습니다.

상속 (Inheritance)에 대해서 설명해 보세요.

새로운 아이폰이 나와도

기존의 기능들과 디자인적인 특징을 가지고 있는 것처럼

‘새로 만드려는 클래스’에

‘이미 있는 클래스’의 특성을 물려 주는 것이 상속의 의미이고

아이폰 신품이 나올 때마다 사양이 개선되는 것처럼

상속할때도 속성이나 기능을 변경하거나 추가할 수 있습니다.

상속은 이미 있는 클래스의 재사용을 쉽게 만들어 준다고 생각합니다.

추상화(abstraction)란 무엇인가요?

아이폰의 굉장히 복잡한 기술의 원리를 알지 못해도

우리는 한번의 터치로 훌륭한 사진을 얻을 수 있는 것처럼

복잡한 메소드를 간단하게 만들어서 해야할 일을 줄이는 것을

추상화라고 생각합니다.

다형성 (Polymorphism)에 대해서 설명해 보세요.

아이폰을 터치하는 동작은 모두 동일하지만

누르는 어플리케이션 마다 다른 일을 수행하는 것처럼

다형성이란 하나의 ‘메소드’로 여러 상황에 대처하는 기법입니다.

동일한 작업을 하는 함수들에

똑같은 이름을 부여할 수 있으므로 코드가 간단해집니다.

OOP의 장점과 단점 말해보시겠어요?

장점으로는

절차적 프로그래밍보다 간편하고

코드의 재사용성이 용이하며

디버깅이 수월하다는 점이 있습니다.

단점으로는

설계하는데 시간이 많이 필요한 점과

모듈에서 하나의 기능만 필요함에도 불구하고

모듈 전체를 가져와야 하기 때문에

프로그램 사이즈가 커질 수 있고

이는 속도저하와 연결 된다는 점이 있습니다.

profile
심심해야 공부하게 된다.

0개의 댓글