Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
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
Archives
Today
Total
관리 메뉴

forest_moon

WIL-2 본문

카테고리 없음

WIL-2

rokga 2022. 7. 24. 23:00

 

알고리즘과 기본 객체지향이 끝나고 지금은 주특기 주차가 시작.

 

우선 한주를 돌아보자면 처음에 프로그래머스 문제를 풀면서 좌절과 당황을 겪었다.

항해를 하기전에 짬짬이 html이나 파이썬 코드를 따라 치고  css 나 javascript를 확인만 할줄 알았지..문제에 대하여 해석하고

그걸 코드로 나타내려고 하니까 쉽지 않았던거 같고, 시간 투자를 많이 했는데 가성비가 나오지 않아서 조금 많이 아쉬웠다.

하지만 팀원분들과 모르는부분을 계속 공유하고, 문제 풀이도 같이 해나가면서 많은 이야기도 나눴던 인상이 아주 깊은 한주 였다.

그래서 앞으로도 여유가 생기면 문제를 하나씩 풀어보면서 이해도를 높여 나가자 라는 목표를 추가했다.

 

객체지향 미니프로젝트

TAXI,BUS 조건에 맞는 클래스 설계하기

처음에는 무슨 말인지 이해가 가지 않았지만, 주말간 강의자료도 보고 생각을 하고 끄적이면서 시도를 해보니, 조금씩 

진행하고 진행을 하고 있어서 좋았다. 

여러가지 기능들을 추가하고 디테일적인 부분도 수정하고 싶었지만 생각보다 시간이 없어 딱 필요한 부분들만 진행한거같아 아쉽다.

 

 

이제 spring 주특기를 진행하는데 개인프로젝트를 미리 조금 진행을 해보니 어렵다기보다 숙련도가 많이 필요한 부분인거같다.

처음 강의를 진행하는데 오류로 인해 많은 시간을 허비했다 .. 6시간정도..  내시간ㅠㅠ

H2 웹콘솔을 사용하고 2주차 강의를 거의 다 끝내면서 갑자기 어디서인가 서버가 열리지 않았다..

그래서 다시 강의를 보면서 확인을 다시 했는데도 .. error다.. 

어디서부터 잘못된건가 하나 하나 뜯다 보니까

@Entntity에 import class 하면서 문제가 생긴거 였다. 강의를 진행하면서 어디에서부터 설정이 잘못 잡혀서

똑같이 해도 @Entntity <<  이렇게 뜨고.. 삭제를 하고 다시 추가하고 import class를 했는데 똑같아서 

담임 매니저님한테 가서 물어보러 갔는데 ,, 위 작업을 다시 해보라고 해서 똑같이 했는데 풀림.. 😤

 

다음주도 힘내서 잘 버텨 봐야겠다 나 놈 화이팅 !

 

WIL 키 워 드  ( 객체지향 프로그래밍 ,, JVM)

 

객체지향 프로그래밍이란?

1. 객체 지향 프로그래밍 ( Object Oriented Programing )

1) 객체

객체란 말 그대로 대상을 나타내는 단어입니다.

예를 들어, 사람 개인 한 명 한 명을 모두 객체라 할 수 있고, 책 한 권 한 권을 객체라 할 수 있습니다.

사람은 생김새와 성격이 똑같을 수는 없기 때문에 개개인을 객체라 할 수 있으며,

책도 내용이 같을지라도 한 권의 책에 흠집을 낸다고 해서 모든 책들이 전부 흠집이 나는 것이 아니기 때문에 한 권 한 권을 객체라 할 수 있습니다.

 

2) 객체 지향 프로그래밍 ( OOP )

OOP는 객체의 관점에서 프로그래밍하는 것을 의미합니다.

C언어를 절차 지향 프로그래밍이라 하는데, 절차 지향 프로그래밍은 프로세스가 함수 단위로 순서대로 진행되는 것을 말합니다.

반면 OOP는 객체들의 유기적인 관계를 통해서 프로세스가 진행됩니다.

즉, 애플리케이션을 구성하는 요소들을 객체로 바라보고, 객체들을 유기적으로 연결하여 프로그래밍하는 것을 말합니다.

 

2. OOP의 특징

1) 추상화

추상화는 목적과 관련이 없는 부분을 제거하여 필요한 부분만을 표현하기 위한 개념입니다.

지도에는 위성지도와 등고선지도 등 여러 가지가 있는데, 각 지도마다 목적이 다릅니다.

  • 위성지도
  • 등고선 지도

등고선 지도를 그릴 때, 목적에 맞지 않는 부분을 제외하고 필요한 부분(지형의 높낮이)만 표현합니다.

이를 객체와 클래스의 관점에서 살펴보겠습니다.

객체들은 실제 그 모습이지만, 클래스는 객체들이 어떤 특징들이 있어야 한다고 정의하는 추상화된 개념입니다.

다시 말하면, 추상화는 객체들의 공통된 특징을 파악해 정의해 놓은 설계 기법이라 할 수 있습니다.

 

2) 캡슐화

캡슐화에서 캡슐은 알약이라고 생각하면 됩니다.

혹시 알약을 깨물어본 적이 있으신가요?

알약을 깨물어 보면 그 안에 내용물은 정말 씁니다. (고통스러웠어요...)

알약 안에 있는 내용물은 정말 쓴 맛이기 때문에 사람들이 약을 먹지 않으려고 합니다.

그래서 내용물을 아무 맛도 안느껴지게 알약에 포장시켜서 사람들이 약을 쉽게 먹을 수 있도록 도와줍니다.

이것이 캡슐화입니다.

 

클래스 입장에서 캡슐화를 살펴보겠습니다.

자바에서 접근 제어자( public, protected... )가 있다는 것을 알고 계실 겁니다.

private으로 정의된 속성은 외부에 노출시키지 않고 자신의 클래스에서만 사용하기 위해 정의합니다.

즉, private으로 정의된 속성은 알약의 실제 내용물이라고 생각하면 됩니다.

이 속성은 외부에 알려줄 필요가 없습니다.

즉, 정보은닉을 할 수 있다는 장점이 있죠.

 

참고로 캡슐화와 정보은닉은 동일한 개념이 아닙니다.

캡슐화를 하면 불필요한 정보를 감출 수 있기 때문에, 정보은닉을 할 수 있다는 특징이 있다는 것입니다.

예를 들어, TV의 리모컨을 사용하는데 리모컨의 내부 회로(private으로 정의된 속성)를 알 필요가 있느냐 하는 것이죠.

사용자 입장에서는 리모콘의 조작 기능, 즉 public으로 정의된 속성만 알면 됩니다.

 

정리

  • OOP  
    • 객체들이 서로 유기적으로 동작하는 프로그래밍 이론
    • 코드의 재사용성과 중복제거가 가장 큰 목적
  • 추상화
    • 목적과 관련이 없는 부분을 제외해서 필요한 부분을 포착하는 기법
    • 객체의 공통된 속성들 중 필요한 부분을 포착해서 클래스로 정의하는 설계 기법
  • 캡슐화
    • 외부에 노출할 필요가 없는 정보들은 은닉 (정보은닉)

출처- https://victorydntmd.tistory.com/117#recentEntries

 

JVM

  • Java Virtual Machine(자바 가상 머신)의 줄임말
  • 운영체제와 자바 프로그램을 중계하는 JVM을 통해 자바 프로그램이 여러 운영체제에서 동일한 실행 결과를 내도록 한다.
  • 자바 바이트코드는 타깃 플랫폼에 상관없이 모든 JVM 위에서 동작한다.
  • 하지만, JVM은 타겟 플랫폼에 의존적이다.'

아래는 자바 프로그램의 실행 단계입니다.

 

먼저, 자바 컴파일러에 의해 자바 소스 파일은 바이트 코드로 변환됩니다. 그리고 이러한 바이트 코드를 JVM에서 읽어 들인 다음에, 이것저것 복잡한 과정을 거쳐서 어떤 운영체제 든 간에 프로그램을 실행할 수 있도록 만드는 것입니다.