[Java기초]1강, OOP! Java를 자바서 JVM!
Ctrl + Shift + F10 //자바의 작동원리
이미 OOP와 JVM이 나온것에서부터 눈치를 첸 센스넘치는 분들도 계실텐데요! 오늘은 그 어느강좌에서도 처음에 소개시켜주지 않는 자바의 작동 원리입니다!(프로그래밍이 처음이신분의경우 이번 강좌는 어려울 수 있으니 초보자 파트만 보시면 됩니다!
참고 : Ctrl + Shift + F10 은 제가 사랑하는 IDE intelliJ 의 빌드 단축키 입니다.
Study(1, (Level.NOOB()); //초보자를 위한 파트 - 프로그래밍에 대한 이해
여러분, 영어 지겹도록 배우시죠? 영어를 보면 나는 너를 사랑한다를 I love You. 로 표현해 직역시, 나는 사랑한다 너를 이 됩니다. 이렇듯 한국말과는 품사의 배치 자체가 다릅니다. 프로그래밍 또한 마찬가지입니다. 프로그래밍 "언어" ㅖ를들면 HTML 이니까요 :). printf 라는 동사가 먼저 나오고, 그 이후 명사인 ""안의 말이 나올 뿐 입니다. 문장끝에 마침표를 찍듯이 세미콜론(;) 을 찍고요. 그러니까
영어와 다를게 없습니다.
여러분이 처음에 영어를 배우셧을땐 어떠셧나요? 많이 어려우셧을 겁니다. 알파벳을 처음볼땐 어떤 그림처럼 생겼다 느끼셧을테고, 문장을 처음 접하셧을때는 품사 배열이 뒤죽박죽이라 해석하는것도 굉장히 힘드셧을 것 입니다. 어떨땐 is 어떨땐 was로 쓰이고 때에따라 the 를 "디" 라고 발음하기도 하죠. 하지만 지금은 어떠신가요? 여러분이 I love You. 를 못읽으시나요? 나는 사랑해 너를 이라고 해석하시는지요? 아니죠. 나는 너를 사랑해 라고 굉장히 부드럽게 읽혀집니다. 프로그래밍 또한 마찬가지입니다. 처음엔 int 나 System.out.println() 이라는것들 그리고 ";" 이 굉장히 생소하시겠지만, 계속 공부하시다보면 마치 영어처럼 프로그래밍 언어가 자연스럽게 들리실 것 이고, 어떨땐 마치 단어퍼즐을 풀거나 책을 읽는것같아서 즐거우실때도 있으실 것 입니다 저는 주로 새로운 알고리즘 등을 발견했을때 그럽니다.
그러니 모두 힘내시기 바랍니다. 프로그래밍 언어가 자연스럽게 읽히고 쓰이는 그날까지!
Study(3,(Level.NOOB()); //초보자를 위한 파트 - OOP! FP! PP! &HTML!!!
전 파트에서 저희는 프로그래밍에대한 한가지의 편견을 벗겨내었습니다. 이제 저희가 배우려하는 Java 에 대해 알려드리려 합니다. 자바는 무엇일까요? 자바는 썬마이크로시스템즈에서 1995년에 개발한 객체지향 프로그래밍언어로 창시자는 제임스 고(Language)슬링이고, 2010년 오라클이 썬 마이크로 시스템지를 이누하면서 Java의 저작권을 고, OpenJDK 가 GPL2 나 Oracle JDK상업라이선스로 유료화정책을 강화하여 점점 망해가고있는 언어 이지만, 저희가 원하는건 이게 아니죠? 자바는 프로그래밍 언어중 OOP라는 방식에 초점을 둔 프로그래밍 언어입니다. 그렇다면 저희는 궁금한게 있겠죠. "OOP"란 무엇일까요?
OOP는 Objected Oriental Programming 의 약자로, 객체지향 프로그래밍 "방식" 이라고 불립니다.
한마디로 객체라는것을 중점에 둔 프로그래밍 방식이란거에요. 그렇다면 객체는 또 뭐죠?
여러분 여러분의 앞에는 마우스가 있습니다. 자 그럼 그 마우스를 자세히 살펴볼까요? 마우스의 색을 어떻죠? 하얀가요 검정색인가요? 아니면 다른 어떤색인가요? 버튼은 몇개나 있죠? 모양은 어떤가요? 마우스의 가격을 얼마였죠? 개발회사는요?
뜬금없이 마우스는 왜 물어보냐고요? 제가 요즘 마우스를 바꾸려고 하거든요
농담이고, 지금까지 제가 한 질문의 답변들이 모두 "마우스의 특성" 입니다. 이를 프로그램에서는 변수라는것으로 저장을 합니다. 그렇다면 마우스를 통해 무엇을 할 수 있죠? 일단, 우클릭과 좌클릭을 할 수 있으며 휠을 굴릴 수 있고, 누를수도 있습니다. 또한 마우스를 움직일수도 있겠죠. 이 모든것들이 "마우스의 행동" 입니다. 마우스나 다른 사물들에게 영향을 주죠. (마우스를 움직이면 컴퓨터의 커서가 움직이는것 처럼요) 이것을 프로그래밍 에서는 "함수(메소드)" 라고 합니다. 특정한 조건으로 불려지고, 불려진 뒤에는 어떠한 결과값을 내기도 안내기도하는 일종의 행동입니다.
제가 말한 객체는 이러한 특성과 행동 등으로 마우스를 정의하는 방식 입니다. 마우스 라는 객체 안에는 왼쪽버튼, 오른쪽버튼, 휠 이라는 또다른 객체가 있고, 마우스의 모양, 마우스의 제조회사, 가격, 마우스의 수명 같은 특성들 그리고 마우스를 좌클릭했을시, 우클릭했을시 나오는 전기신호 같은 행동 또한 있습니다. 이러한 객체를 기반으로 프로그램밍을 하는 방식이 OOP, 객체지향 프로그래밍 입니다. 자바는 이렇듯, 여러 객체들이 서로간의 상호작용을 통해 프로그램을 작동해나가는 객체지향 프로그래밍 입니다. 여담으로, 이와 다른 방식으로는 javascript등에서 쓰는 FP와 c에서쓰는 PP 가 있습니다.
하지만 여러분, 이렇게 객체들간의 상호작용만 하고 사용자와는 상호작용을 하지 않는다면, 프로그래밍이 시작될 수 있을까요? 여러분이 도미노를 멋지게 만들었다해도 결국 하나를 무너뜨리지 않으면 그 도미노는 제대로 작동 할 수 없겠죠?
프로그래밍 또한 마찬가지입니다. 결국 첫 도미노를 무너뜨려줄, 즉 프로그램의 상호작용을 시작해줄 무언가가 필요합니다.
public static void main(String[] args) {} //초보자를 위한 파트 - 도미노를 무너뜨릴 무언가
전 파트에선 첫 도미노를 무너뜨려줄 무언가가 필요하다고 말하며 끝이 났습니다. 그렇다면, 과연 프로그래밍에서는 어떤것이 그 역할을 해줄까요? 이미 제목에서 혹은 다른곳에서 보아서, 아시는분들도 있으시겠지만, 바로 main 함수(메서드)입니다! Ho라서 바꾼거 아니에요 메인 메서드는 만약 프로그램을 컴파일하고, 실행할 경우 가장 먼저 실행되는 함수입니다. 그렇기에 구모가 큰 프로그램의 경우 main 메서드가 여러 의 동작 순서 혹은 프로그램을 처음 실행할때의 셋팅대로 바꾸는 역할을 합니다.
자바에서는
public static void main(String[] args) { //실행할 내용 }
의 방식으로 쓰입니다. 저 앞에 붙은 public static void 나 괄호안의 String[] args 는 지금 굳이 알지 않으셔도 됩니다!
오늘은 프로그래밍이 무엇인지, 강좌부터는 본격적으로 여러분이 원하시는 "문법 강좌" 가 시작됩니다! 그러면 초보자분들은 다음에 다시뵈요!!
강좌 분량상 이번 숙련자파트는 다음강에 올려집니다
숙련자파트에서는 JVM과 자바 바이트코드등 좀더 자바의 기반을 알아보겠습니다!
Phrack_
2020.05.10매우 정성글 ㄷㄷ 감사합니다~
AshBluebird
2020.05.102일정도 후에 숙련자파트와 다음강의 초보자 파트가 나올 예정입니다 ㅎㅎ
Phrack_
2020.05.10기대되네요!!
마크러버
2020.05.10제목이 ㅋㅋ
근데 엄청 열심히 쓰셨네요
좋은 글 감사합니다
PatrickKR
2020.05.10바이트코드...! 만세!! 기다리겠습니다!