• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

OOP 란 무엇인가요?

23.05.10 16:42 작성 조회수 677

0

최근

OOP 란 무엇인가요?

질문을 받았는대, 어버버한 경험이 있는대,

범위가 너무 광범위하여 답하기가 어렵습니다.

답변 2

·

답변을 작성해보세요.

5

안녕하세요.

답변이 늦었습니다. 늦은 기간 동안 AI가 답변한 것 같습니다. 신기하기도 하면서 그냥저냥 일반적이고 괜찮은 답변이라는 생각이 드네요.

그래서 우선 누군가 저에게 ‘OOP가 무엇이냐?’라고 물어본다면, ‘객체’를 지향하는 프로그래밍 방식이라고 대답할 것입니다. 그리고 클래스 지향이 아니며 객체 지향이라고 부르는 이유를 설명할 것이며, 절차 지향과 객체 지향의 차이점, 객체 지향의 장단점에 관해 이야기할 것입니다. 객체 지향에서 강조하는 역할, 책임, 협력에 대해서도 대답할 것이고요. 추가로 객체 지향에서 행동이 강조되는 이유, 객체 지향적 사고, SOLID 같은 답변을 할 수도 있겠네요. 그리고 이 내용들은 모두 강의에 수록된 내용입니다.

음… 사실 이 질문을 봤을 때 어떻게 답변드려야 할지 좀 막막했습니다. 왜냐하면 질문자님의 뉘앙스로 보았을 때 이 질문은 면접 질문 같아 보였기 때문입니다. 그래서 어떻게 대답할지 고민하다가 딱 위 문단 정도로만 답변드리는게 좋겠다고 생각했습니다. 상세 내용들이 궁금하시다면 chatGPT에 물어볼 수도 있고 인터넷에 검색해서 이해하실 수도 있을 겁니다. 그래서 나머지 부족한 설명은 질문자님이 직접 완성하시면 좋을 것 같아요.

그리고 이하 작성하는 답변은 이 질문이 면접 질문이었다는 가정하에 드리는 조언들입니다. 따라서 면접 질문이 아니었다면 무시하셔도 됩니다. 약간 잔소리 같은 느낌이라 미리 양해를 구합니다.


상세한 답변을 못드리는 이유

그래서 우선 제가 이 질문에 상세한 답변을 못드리는 점부터 설명드리려고 합니다.

  1. OOP가 무엇인지 답변 하나로 설득할 자신이 없다.
    음, 장담하건대 분명 질문자님도 OOP가 무엇인지 본인 스스로 나름의 정의가 있을 것입니다. 그런데도 이런 질문을 올렸다는 것은 본인이 내린 정의가 영 탐탁지 않고 어딘가 불만족스러워서일 것입니다. 그래서 본인이 갖고 있는 생각이 맞는지? 아니면 모범 답안은 무엇인지? 그런 것들이 궁금해 하시는 것이라 생각합니다.
    그런데 저는 OOP가 무엇인지 여기에 고작 몇 문단 작성해서 질문자님에게 설명하고 설득할 자신이 없습니다.😭 애초에 그게 가능하다면 전국 대학에 있는 한 학기 분량의 객체 지향 프로그래밍 수업은 폐강되어야 합니다. 그리고 OOP와 관련된 수많은 책과 강의들도 존재할 이유가 없었을 것입니다.

 

  1. 각 잡고 쓰면 책 하나가 나오고, 성의 없는 답변은 AI가 해주는 것과 다를게 없다.
    더불어 제가 여기에 OOP가 무엇인지에 대해 ‘저’의 생각을 상세히 작성하는 것도 크게 의미가 없다는 생각이 들었습니다. 물론 저의 답변이 질문자님의 답답한 부분을 어느 정도 해소시켜 드릴 수도 있을 겁니다. 그런데 그게 근본적인 해결책이 되진 못합니다. 왜냐하면 아무리 제가 길게 글을 작성해도 부족한 설명이 있을 수밖에 없기 때문입니다. 그렇다고 이걸 꽉꽉 채워서 밀도 있게 글을 작성하면 책 한 권이 그냥 나올 겁니다. 반대로 어느 누구나 할 수 있는 답을 적는다면, 그게 위에 AI가 대답하는 거랑 무슨 차이가 있지? 라는 생각이 들고요.

 

  1. 설득을 못 시키는 답변은 결국 의미 없는 답변이다.
    혹시나 제가 글을 깔끔하게 정리해서 한문단짜리 괜찮은 답변한다고 해도, 그 내용이 정답이고 아니고를 떠나서, 질문자님을 설득시키지 못한다면 의미가 없습니다. 제가 여기에 OOP가 무엇인지 줄줄이 쓰고, 그걸 질문자님이 외운다고 가정해 봅시다. 그리고 그걸 어딘가 다른 면접에서 똑같이 이야기한다고 생각해 봅시다. 그게 티가 안 날까요…? 당연히 티가 납니다. 왜냐하면 청자 입장에서 느끼는 설득력 자체가 다르기 때문입니다. 저는 제가 하는 말들에 대해 확신을 갖고 말하는 반면, 외워서 답변하는 사람은 그렇지 못합니다. 추가로 들어오는 질문들에 답변하지 못하고 결국 ‘외워서 답변하는거네.’라는 인상만 남겨줄 뿐입니다. 제가 하는 대답은 ‘저’의 해답일 뿐입니다.

 

결국 이 질문은 맞든 틀리든 질문자님 본인 스스로 정리해서 답을 내려야 하는 질문인 것입니다. 분명 질문의 유형과 성질에 따라 외워서 해결되는 질문이 있습니다. 하지만 적어도 이 질문은 계속 고민하고 스스로 답변을 내리셔야 합니다. 고통스럽고 답답한 부분이 있지만 이걸 찾아가는 과정에서 배우는 게 훨씬 많을 겁니다.

추가로 제가 드리고 싶은 조언은 ‘면접은 대화하는 시간’이라는 겁니다. 면접은 정답 맞추기를 하는 시간이 아닙니다. 물론 면접관 입장에서는 상대방이 얼마나 올바른 말을 하는지 평가하긴 할 겁니다. 그런데 정답 맞추기를 하려 했던 것이라면 퀴즈를 보거나 서술형 시험을 봤을 겁니다. 틀려도 괜찮습니다. 칼같이 채점하는 곳도 존재하겠지만, 그것보다는 평소에 이런 고민은 해봤는지, 왜 이 질문에 그렇게 답변하는지, 그런 생각들을 궁금해하는 곳이 더 많을 거라 생각합니다. 그리고 저는 이런 생각들을 정리하는 게 면접 준비라고 생각합니다. 게다가 저도 면접 봤을 때를 돌이켜보면, 정말 많은 답변에 오류가 있었었고요.

이런 말을 글로 남겨도 되나 고민했습니다. 제가 인사 담당자도 아니고, 취준생분들의 멘토링을 할 만큼 무게를 짊어질 자신도 없어서 조심스러웠거든요. 게다가 모든 기술 면접관을 대변할 수도 없고요. 그런데 면접을 너무 시험처럼 접근하시는 분들이 많이 계셔서 고심 끝에 글을 적습니다. 모쪼록 건승하길 기원합니다. 응원합니다. 감사합니다.

김우철님의 프로필

김우철

2023.06.15

정성스런 답변 대신 감사인사드립니다!!!

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.05.24

안녕하세요, 인프런 AI 인턴이에요.

OOP는 Object-Oriented Programming의 약자로 객체지향 프로그래밍을 의미합니다. 객체지향 프로그래밍은 컴퓨터 프로그램을 설계하는 방식 중 하나로, 현실 세계의 개체를 컴퓨터 프로그램에서도 모델링하여 대응시키는 방식입니다. 하나의 프로그램이 여러 개의 객체로 구성되며, 각 객체들은 서로 관계를 맺고 협력하며 프로그램을 실행합니다.

객체지향 프로그래밍은 기존의 절차지향 프로그래밍에 비해 가독성이 높고 유지보수성이 좋다는 장점이 있습니다. 객체의 역할과 책임을 분담하여 각 객체의 기능을 명확하게 정의함으로써 코드의 중복을 방지하고, 코드 재사용성을 높일 수 있습니다.

하지만 개념이 광범위하여 처음 접하는 사람에게는 이해하기 어려울 수 있습니다. 이를 극복하기 위해서는 객체, 클래스, 상속 등의 기본 개념부터 차근차근 학습하고 실습해보는 것이 좋습니다. 인프런에서는 다양한 객체지향 프로그래밍 강의가 제공됩니다. 이를 통해 개념을 익히고 실력을 향상시키는 것을 추천드립니다.

읽어주셔서 감사합니다.