티스토리 뷰

trigger

기술면접? 객체지향언어

_쿠나 2021. 2. 26. 17:34

이력서를 넣기 전에 생각해보자

나는 기술 면접에 대처할 수 있는가?

 

백퍼센트 없다. 확률 제로다. 기본 개념을 이해는 하고 있지만 막상 말로 꺼내기가 힘들어

내가 제일 기억하기 쉽고 이해하기가 쉬운 방법인 스크립트 형식으로 정리해보려 한다.

 

자 먼저 객체지향 프로그래밍

객체지향 프로그래밍은 컴퓨터 프로그래밍 스타일, 패러다임 중의 하나이다. 

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

여기서 데이터를 추상화한다는 말이 뭘까? 추상화의 정의를 살펴보자

추상적: 어떤 사물이 직접 경험하거나 지각할 수 있는 일정한 형태와 성질을 갖추고 있지 않은 것.

데이터를 구체적으로 정하지 않고 대략의 실루엣정도 만들어 두는 것을 추상화시킨다고 보면 될 것 같다. 여기서 상태와 행위를 추가해 객체를 만드는게 아닐런지. 그리고 객체들 간에 상호작용을 하면서 로직을 짜나가는 프로그래밍 방법을 객체지향 프로그래밍이라고 말한다고 볼 수 있겠다.

 

그럼 객체는 뭐냐?

객체는 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지고 있는 다른 것과 식별 가능한 것

(다 '것' 타령...) 객체는 속성과 동작으로 구성된다. 속성은 필드, 동작은 메소드에 해당한다.

객체 지향 프로그래밍은 이런 객체를 지향하는 프로그래밍 방법을 말하는 것이다. 헷갈리지 말아라

 

자 그럼 객체 지향 프로그래밍이 아닌 것은 무엇이 있나? 

절차지향 프로그래밍이 있다. 절차지향 프로그래밍은 말그래도 순차적으로 처리하는 것을 중요하게 따진다. 물 흐르듯, 회사에서 연차내는 과정 처럼, 그냥 소설책 읽을 때 처럼 절차적으로 진행된다. C언어가 대표적이다. 절차지향 프로그래래밍은 컴퓨터의 처리방식과 비슷해 더 빨리 처리되어 시간적으로 유리하다. 소프트웨어 발달로 하드웨어가 더뎌지면서 문제가 됨.. 그래서 객체 지향 언어가 등장

객체지향언어는 기능별로 묶어서 모듈화를 한다. 썼던 모듈을 또 쓰는 식의 재활용이 가능해서 낭비를 줄일 수 있다. 순서 없이 사전처럼 이 정보 저 정보 찾아다가 확인하는 형식.. 

 

객체 지향 프로그래밍의 특성

캡슐화: 관련된 데이터와 알고리즘(코드)이 하나의 묶음으로 정리된 것. 관련된 코드와 데이터가 묶여있고 오류가 없어서 사용이 편리하다... 관련된 기능과 특성을 한 곳에 모으고 분류해서 재활용이 쉽다고. 기능과 특성의 모음을 "클래스"라는 "캡슐"에 분류해서 넣는것 이라고 한다. 

 

추상화: 객체들이 가진 공통의 특성들을 파악하고 불필요한 특성들을 제거하는 과정..

객체들이 가진 동작들을 기준으로 이용자들이 동작만 쉽게 구동할 수 있도록 한다. 

갤럭시 s21, iphone 12, lg velvet 의 객체는 다 전화가 가능한 공통의 특성을 가진다.. 클래스는 phone이라고 하면 되겠네(몰라 개소리)

 

상속: 부모클래스의 속성과 기능을 그대로 이어받아 사용할 수 있게함.

기능의 일부분을 변경 해야할 경우 상속받은 자식 클래스에서 해당 기능만 다시 수정하여 사용할 수 있게 하는 것(기존코드 재활용)

 

다형성: 하나의 이름으로 많은 상황에 대처하는 방법..... 하나의 변수명, 함수명 등이 상황에 따라 다른 의미로 해석될 수 있는 것... 오버라이딩, 오버로딩^^

 

절차지향과 비교했을 때 객체지향의 특징

코드 재사용이 쉽다

신뢰성 있는 소프트웨어를 작성할 수 있다.

업그레이드, 디버깅이 쉽다. 

처리속도가 느리고 설계에 많은 시간소요가 들어감

728x90
댓글
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
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 29 30 31
글 보관함