20220724_WIL
객체지향 프로그래밍
Object Oriented Promgramming
객체지향 프로그래밍이란 무엇일까?
간단하게는 코드를 잘 작성, 정리하는 방법이며 데이터에 대한 생각 및 구조의 일종이라고 말할 수 있다.
프로그래밍을 진행하다보면 수 많은 객체를 만들어야하는 상황이 계속적으로 발생한다.
대부분의 경우 객체를 생성함에 있어 객체를 구성하는 각각의 속성(Property)가 겹칠 때가 많다.
이 때 이러한 속성들을 중복적으로 작성하는 것은 코드를 길어지게 만들 뿐만 아니라
효율적인 측면에서도 썩 좋지만은 않다. 이러한 문제점들을 해결해주는 방법이 객체지향 프로그래밍이다.
객체지향 프로그래밍의 핵심 개념은 Class. Class는 Object(객체)를 만들기 위한 일종의 공장같은 것이다.
객체를 만들기 위한 도면인 생성자(Constructor)를 정의하고, 공통함수인 Method(메서드)를 설정한다.
이러한 도면, 틀에 의해 만들어진 객체들은 그 틀에 따라 필드 및 메소드를 가지되 디테일한 부분들은
추가나 발전이 될 수 있는 것이다.
예를 들어 Animal이라는 Class가 정의될 때, '뇌가 있고 다리가 있다.' 라고 정의한다면
사람 Class를 상속받는 Human이나 Pet이란 클래스도 '뇌가 있다, 다리가 있다.'라는 코드를 입력할 필요가 없어
더 효율적인 코드 작성이 가능해지는 것이다.
추가적으로 객체지향 프로그래밍에 있어 중요한 키워드 4가지는 다음과 같다.
- Encapsulation(캡슐화)
- 데이터와 함수를 캡슐(클래스)안에 가두는 것
- 상속과 숨길 속성(private) 설정 가능
- 데이터 그리고 class 안에 있는 해당 데이터를 이용하는 함수를 잘 정리하는 방법
- Inheritance(상속)
- Class를 더 쪼개고 세분화할 수 있음
- 분할 및 정복을 가능하게함
- Abstraction(추상화)
- 상속을 함에 있어서 디테일한 부분은 정의해놓지 않고 틀을 설정
- Polymorphism(다형성)
- 상속받은 클래스 값을 Override를 통해 수정가능
- 하지만 규칙은 그대로(클래스의 핵심은 있으나 구현방식은 변형 가능)
JVM(자바 가상 머신)
소프트웨어로 만들어진 자바 프로그램이 실행되는 가상의 컴퓨터
자바의 특징 중 하나인 '운영체제에 독립적'을 실현하는 부분
일반적으로 프로그램을 작성하면 특정 운영체제에서만 실행 가능
ex, Windows OS에서 프로그램을 작성하면 리눅스에서는 실행 불가
하지만 java에서 작성한 프로그램은 어떤 운영체제에서도 실행 가능
Write once, run anywhere
🤜금주목표(7/18~7/24)
- 항해99 중도하차 하지 않기
- 2주차, 3주차 팀원들에게 인정받기(실력적인 부분이 안된다면 태도나 노력 등에서라도)
- 프로그래밍과 좀 더 친해지기(프로그래밍적 사고를 지금보다 조금이라도 더 함양하기)
🤜차주목표(7/25~7/31)
- 항해99 중도하차 하지 않기
- 내가 작성하는 코드의 의미는 알고가기(무지성 Copy Paste는 더이상 그만..)
- 현 시점에서 자바에 대해 이해한 만큼은 Spring Boot에 대해서 이해하기
어느새 항해99 2주차도 지나가고 있다.
첫 주차 때 가졌던 프로그래밍에 대한 막연함이 아직도 유지되고는 있지만, 한 주 밖에 지나지 않았음에도
성장해가고 있음을 조금은 느끼고 있다.
현재 내게 가장 필요한 자세는 조바심을 갖지 않는 것, 기본기부터 차례로 다져가는게 필요한 것 같다.
잘 모르고, 이해하지도 못한 상황에서 무작정 진도만 나가고 과제제출을 위한 과제를 하는 것이 아닌
조금은 느리더라도 내가 작성하는 코드가 어떤 의미인지, 어떤 기능을 하는지는 숙지하고 넘어가는 것.
솔직히 아직까지는 잘 모르겠다. 내가 99일간의 여정을 무사히 마치게 되더라도 바로 전력으로 투입이 가능할 정도의
'개발자'가 될 수 있을지. 그래도 지금 내가 매주 WIL을 쓰면서 느끼는 "전 주보다 꽤나 성장한 것 같다"라는 느낌을
항해 일정이 마무리 될 때까지 느낄 수 있다면 그렇게 될 수 있지 않을까
이를 위해서는 진짜 조바심을 느끼며 하루하루 임하는 것이 아닌 조금씩이라도 탄탄하게 성장해나가는 자세가 필요하다고 느끼는 것이다.
다음 주 WIL을 쓸 때의 나는 오늘의 나보다 더 뛰어난 개발자가 되어있을 것이라 믿어 의심치 않는다🤓
'WIL👨🏫' 카테고리의 다른 글
20220821_WIL(프로젝트 협업) (0) | 2022.08.21 |
---|---|
20220814_WIL(Spring Security CORS) (0) | 2022.08.14 |
20220807_WIL(feat.항해 4주차 회고) / ORM, SQL, MVC (0) | 2022.08.07 |
20220731_WIL(feat.항해 3주차 회고) / DI, IoC, Bean (0) | 2022.07.31 |
20220717_WIL(feat.항해99 1주차 회고) (0) | 2022.07.17 |