hayu's 개발 일지

[WIL]240211 객체지향 프로그래밍 / 항해99 회고 본문

항해99/회고

[WIL]240211 객체지향 프로그래밍 / 항해99 회고

hayu00 2024. 2. 11. 11:52

객체 지향 프로그래밍(Object-Oriented Programming, OOP) 이란?

- 객체 지향 프로그래밍이란 객체를 지향하는 프로그래밍을 말한다. 객체들의 상호작용을 표현한 것이다. (= 객체들의 모임)

 

객체(object)란?

- 객체는 클래스에 실제 내용물을 담아 실체화한것을 말한다. 즉, 객체는 실제 세계에서 존재하는 사물이나 개념 등을 프로그래밍에서 표현한 것이다. 

 

객체 지향 프로그래밍 언어

- C++ , C# , JAVA , Pytnon 등이 있다. 

 

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

- 객체 지향 프로그래밍의 특징에는 추상화, 캡슐화, 상속, 다형성이 있다. 

 

추상화

-  불필요한 정보를 숨기고 중요한 정보만을 표현함으로써 프로그램을 간단히 만드는 것이다. 

- 객체의 공통적인 속성과 기능을 추출하여 정의하는 것을 말한다.

 

캡슐화

- 클래스 안에 서로 연관있는 속성과 기능들을 하나의 캡슐로 만들어 데이터를 외부로부터 보호하는 것이다. 

 

캡슐화의 기능

- 데이터 보호: 외부로부터 클래스에 정의된 속성과 기능들을 보호한다.

- 데이터 은닉: 내부의 동작을 감추고 외부에는 필요한 부분만 노출한다.

즉, 외부로부터 클래스에 정의된 속성과 기능들을 보호하고, 필요한 부분만 외부로 노출될 수 있도록 하여 각 객체 고유의 독립성과 책임 영역을 안전하게 지키고자 하는 목적이 있다. 

 

상속

- 상위 클래스로부터 확장된 여러 개의 하위 클래스들이 모두 상위 클래스의 속성과 기능들을 간편하게 사용하게 한다.

- 클래스들 간에 공유하는 속성과 기능들을 반복적으로 정의할 필요없이 한 번만 정의해두고 간편하게 재사용할 수 있어 반복적인 코드를 최소화하고 공유하는 속성과 기능에 간편하게 접근하여 사용할 수 있다. 

- 그러나 상위 클래스의 변경이 어렵고, 불필요한 클래스가 증가할 수 있다. 그리고 상속이 잘 못될 수 있다는 단점이 있다.

 

다형성

- 어떤 객체의 속성이나 기능에 따라 여러 가지 형태를 가질 수 있는 성질이다. 

- 어떤 객체의 속성이나 기능이 그 맥락에 따라 다른 역할을 수행할 수 있는 객체 지향의 특성이다. 

- 메서드 오버라이딩과 메서드 오버로딩이 있다. 

오버라이딩: 상위 클래스가 가지고 있는 메소드를 하위 클래스가 재정의해서 사용하는 것이다.

오버로딩: 같은 이름의 메서드가 인자의 개수나 자료형에 따라 다른 기능을 하는 것이다.

 

객체 지향 프로그래밍의 장단점

장점

- 프로그램을 보다 유연하고 변경이 쉽게 만들 수 있다.

- 코드의 변경을 최소화하고 유지보수를 하는데 유리하다.

- 반복적인 코드를 최소화하고, 코드를 최대한 간결하게 표현할 수 있다.

 

단점

- 처리 속도가 상대적으로 느리다.

- 용량이 커질 수 있다.

 

JVM(Java Virtual Machine) 이란?

- JVM은 자바 가상 환경(Java Virtual Machine)의 줄임말이다. 자바 가상 환경은 자바 실행 환경을 만들어주는 가상 머신이다. 

- Java는 기계어로 컴파일을 해줘야 한다. 그런데 JVM을 거쳐 운영체제(OS)에 도달하기 때문에 JVM 이 읽을 수 있도록 하나의 바이트 코드(.class)로 변환한다. 즉, Java는 하나의 바이트 코드(.class)로 변환하고 그것을 JVM이 읽어 운영체제(OS)에서 실행하는 것이다. 

 

Java 를 컴파일 하는 방법

- Java 컴파일러로 .java 파일을 .class 즉, 바이트 코드로 만드는 과정을 알아보자. 

- Java 컴파일러는 JDK를 설치하면 javac.exe라는 실행 파일 형태로 설치된다. 정확히는 JDK 의 bin 폴더(텍스트 폴더)에 javac.exe 로 존재한다. Java 컴파일러의 javac 라는 명령어를 사용하면 .class 파일을 생성할 수 있다.

 

1. .java 파일을 .class 파일로 변환시킨다.

C:\Users\owner>cd Desktop

- Windows를 기준으로, cmd 창을 열고 해당 .java 파일이 있는 곳으로 이동한다.

 

2. 이동 후, 해당 위치에서 javac 명령어로 컴파일을 진행한다.

C:\Users\owner\Desktop>javac test.java

 

- 바탕화면(현재 위치)에 .class 파일이 생성된 것을 확인할 수 있다.

 

실행하기

C:\Users\owner>cd Desktop
C:\Users\owner\Desktop>java test

.class 파일이 있는 곳으로 이동 후 java <.class 파일 이름> 을 입력하여 실행한다. 

 -> 내부의 코드가 실행된 것을 확인 할 수있다. 

 


 

참고

- https://www.codestates.com/blog/content/%EA%B0%9D%EC%B2%B4-%EC%A7%80%ED%96%A5-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%ED%8A%B9%EC%A7%95

- https://jongminfire.dev/%EA%B0%9D%EC%B2%B4%EC%A7%80%ED%96%A5-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%EC%9D%B4%EB%9E%80

https://ko.wikipedia.org/wiki/%EA%B0%9D%EC%B2%B4_%EC%A7%80%ED%96%A5_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D

- https://doozi0316.tistory.com/entry/1%EC%A3%BC%EC%B0%A8-JVM%EC%9D%80-%EB%AC%B4%EC%97%87%EC%9D%B4%EB%A9%B0-%EC%9E%90%EB%B0%94-%EC%BD%94%EB%93%9C%EB%8A%94-%EC%96%B4%EB%96%BB%EA%B2%8C-%EC%8B%A4%ED%96%89%ED%95%98%EB%8A%94-%EA%B2%83%EC%9D%B8%EA%B0%80

- https://backendcode.tistory.com/161

- https://ko.wikipedia.org/wiki/%EC%9E%90%EB%B0%94_%EA%B0%80%EC%83%81_%EB%A8%B8%EC%8B%A0


이번 한 주 동안 배운 것

- 이번 한 주 동안은 JAVA 언어를 배웠다. 변수, 연산자, 조건문, 반복문을 배우고 코드도 입력해 보았다.

- 팀 프로젝트도 진행해보았다. 그리고 코드 리뷰도 진행했다. 

 

느낀 것

- 배우고 있는 모든 것들이 중요하겠지만, 특히 조건문과 반복문을 많이 사용한다는 것을 알았다. 코드를 짤 때면 거의 들어가는 것을 이었다. 조건문과 반복문을 어떻게 잘 활용하느냐에 따라 코드도 많이 달라졌다.

- 특히 코드 리뷰를 하면서 많이 배웠다. 다른 팀과 코드 리뷰를 하는데 우리 팀의 코드를 어떻게 고치면 더 깔끔해 질지, 어떤 코드는 삭제해도 되는 코드인지 등의 피드백을 들었다. 팀원분과 함께 코드를 확인할 때는 생각하지 못했던 부분이라서 코드 리뷰에서 많이 배웠다. 

 

잘한 것

- 처음에 팀 프로젝트의 내용을 보고 쉽지 않을 것이라고 생각했다. 그러나 팀원분과 함께 코드를 짜나가는 것에 스스로 뿌듯했다. 서로의 생각을 공유하며 프로젝트를 만드는 과정이었다. 

한 주를 무사히 끝낸 것에 박수를!

아쉬웠던 것

- 코드 리뷰를 하며 많이 느꼈지만, 아직은 코드의 작동이 목적이기 때문에 깔끔하지 못하다는 것을 알았다. 조금 더 깔끔한 코드를 짜는 것을 연습하는 것이 좋을 것 같다.  

 

회고

- 이번 주는 나름 열심히 했지만, 몰입의 시간이 좀 부족했던 것 같다. 아무래도 처음 사용해보는 프로그램들이 많아서 헤매는 시간도 있었기 때문이지 않을까 생각한다. 그래도 계속해서 몰입하고 공부하다 보면 조금씩 성장한 나를 발견할 수 있지 않을까 생각한다.

- 9조의 팀원들도 많은 도움을 주셔서 너무 감사했다. 모르는 것을 친절하게 알려주셔서 많은 도움이 되었다.