TIL 21.05.10

Jaemin Jung·2021년 5월 10일
0

Today I Learned

목록 보기
15/62
post-thumbnail

예상하지못한 합격

금요일 solo study를 진행하던중 HA테스트에 합격했다는 메일을 받았다.
너무 예상밖에 좋은소식이어서 기쁘기도 하지만 복잡하기도 했다.
뭐 어쩌겠어 감사히 받아들이고 배로 노력해볼수밖에 없다.
블로깅을 할때 처음에는 개념을 세세하게 작성한 개념블로깅이었으나, 시간을 많이 잡아먹어
일기형식으로 써내려가니 이번엔 내자신이 완벽하게 배운것에 대한 정의하지를 못하는것을 느낀다.
앞으로 TIL은 일기 형식 + 가벼운 개념 정리글로 작성해보려한다.

오늘한일

  • 객체 지향 프로그래밍 OOP(Object Oriented Programming)을 학습하였다.
  • 페어와 함께 객체 지향 프로그래밍 과제를 수행하였다.

Achievement Goals

(이해한대로 작성하였기에 틀릴수도 있습니다. 계속 공부하며 수정해 나가겠습니다.)

  • 객체 지향 프로그래밍 특징을 이해할 수 있다.
    캡슐화
    상속
    추상화
    다형성

객체 지향 프로그래밍 OOP(Object Oriented Programming)

OOP는 프로그래밍 방법론중에 하나이다.
부트캠프에서 배우고있는 자바스크립트는 객체지향 언어는 아니나,
OOP는 하나의 방법론이기에 자바스크립트에서도 ES6에서 클래스를 도입하는등 여러 문법적인 기능을 제공하여 이 방법론이 가능하다고 할수있다.
프로그래밍을 더 배우기 쉽게 하고 소프트웨어 개발과 보수를 간편하게 하며, 보다 직관적인 코드 분석을 가능하게 하는 장점을 갖고 있다.
크게 네가지 기본적인 컨셉이 있다.

캡슐화 (Encapsulation)

데이터와 기능을 클래스를 통해 하나의 단위로 묶는 것,
변수와 함수를 하나로 묶는것을 말한다.
리액트에 컴포넌트와 비슷하게 역할 수행을 위한 기능이
하나로 묶여있기 때문에 유지보수에 있어서 매우 편리하다.

또, 캡슐화는 인해 내부의 데이터나 구현을
외부에서 보이지 않도록 하는 은닉화라는 목적도 있다.
객체가 맡은 역할을 수행하기 위한 하나의 목적을 한데 묶어
외부에서 접근하지 못하는게 가능해진다.
이로인해 side effect현상을 줄일 수 있다.

추상화 (Abstraction)

일상생활에서 차에 시동을 걸때 운전자는 시동 버튼을 눌렀을때
어떤 에너지를 전달하여 엔진이 동작하고 차가 시동이 걸리는지에 대한
원리까지는 굳이 알 필요가 없을것이다.
보통은 버튼이 눌리면 시동이 걸린다는것만 알면 된다.
이전에 리액트를 배울때 useState에 대해서 배우게 되었는데,
useState함수의 내부 로직은 알지 못하나, 사용방법만 알면
사용할 수 있는것처럼 깊이 알지 못하더라도
추상화를 통해 이 기능을 사용할수 있게 되는것이다.

상속 (Inheritance)

최상위 부모 객체로부터 하위 객체가 속성을 물려받는것을 말한다.
다들 알고있는 메이플스토리 게임캐릭터를 예로들자면,
캐릭터를 처음 생성할때에는 초보자라는 직업을 가지나,
플레이어의 선택에 따라 전사,마법사,도적,궁수 등
여러 직업으로 파생될수있지만, 초보자가 가지고 있는 기본공격 점프등은
파생된 모든 직업이 할수있다. 차이점은 사용하는 스킬일것이다.

초보자 + 전사 스킬 = 전사

여기서 초보자는 가장 최상위의 부모 객체일것이며 전사는 부모 객체의 기능을 바탕으로 새로운 변수와 메소드를 추가하게된 자식 객체일것이다.

다형성 (Polymorphism)

부모클래스에서 정의된 메소드가 자식클래스에서 다른걸로 override될 수 있는걸
객체지향성의 다형성이라고 한다.
예를들자면 "말하다"라는 동작의 본질은 "입으로 소리를 내다"를 의미한다.
그러나, 각기 다른 동물들이 "말할 때" 제각각의 소리를 내는 것처럼,
객체 역시 똑같은 메소드라 하더라도, 다른 방식으로 구현될 수 있다.

현재 상태

  • 어안이 벙벙한 상태, section1에서 배운내용들 완벽하게 복습이 필요
  • 합격이 과분하다고 생각하는 만큼 더 노력하자!
profile
내가 보려고 쓰는 블로그

0개의 댓글