본문 바로가기

개발 코딩 정보 공유/안드로이드 자바 코틀린

함께하는 스터디 도대체 자바가 뭐에유? 객체지향은 또 뭐람???

 

 

 

 

 

1장. 도대체 자바가 뭔가요? 객체지향은 또 뭐구요.

 

 

 

 

 

이미지 / pixabay

 

 

 

자바?? 커피임??

 

 

프로그래밍을 하는자 혹은 아닌자… 

혹시 누구든 자바 라는 프로그래밍언어에 대해 한번쯤은 들어보지 않았을까 합니다.

 

 

 

 

"아~ 그 자바. 자바.자바… 알럽~ 커퓌 알러~~ㅂ 그거 커피 아니야?? "

"응. 아니야."

 

 

 

이번편에 설명하고자 하는 자바는 프로그래밍 언어 JAVA 입니다.

자바는 ‘썬마이크로시스템즈’ 의 ‘제임스 고슬링’ (+ 연구원들)에 의해 1995년에 발표된 언어 입니다.

처음에는 가전제품내에 들어가는 프로그램을 위해 개발 되었다가 현재는 웹 어플리케이션(일반사람들이 이야기하는 그 홈페이지)을 만드는데 주로 쓰이는 언어 입니다. 

 

 

잘 이해가 안 가신다구욧?”

 

 

잘 이해가 안되면 핸드폰을 잠시 꺼내서 만져보시면 됩니다. 스마트폰의 OS가 (안드로이드)자바로 이루어져 있습니다. 

 

자바는 기존의 다른 언어들과 다른 특징을 가지고 있었는데요. 

바로 플랫폼에 독립적으로 작동한다는 것 입니다.프로그래밍 언어는 사람이 이해할수 있는 자연계 언어로 만들어 기계가 알아먹게 하기 위해 필연적으로 컴파일이라는 과정을 거치게 되는데요. 이 과정은 컴퓨터의 두뇌인 cpu와 os에 매우 긴밀하게 동작하게 됩니다. 자바는 이런한 종속적 관계를 탈피하고자 하였습니다. 중간단계에 JVM(자바가상머신) 이라는 가상의 머신을 두고 이를 통해 각각의 시스템에서 독립적으로 작동을 하게 만든 것이죠. 이는 자바의 초기 설계 모토를 보면 잘 알수 있습니다. 

 

 

"Write Once, Run Anywhere" (한번 쓰고 , 어디서든 사용한다!)

 

 

이러한 자바도 단점이 존재합니다. 바로 기존의 언어들 (C C++) 보다 속도가 떨어진다는 것 인데요. 중간의 가상머신으로 인한 단계를 한번 더 거치기 때문이죠. 초기에 하드웨어 스펙이 떨어지던 당시에는 이 같은 단점은 크게 작용하였지만 현재로써는 별의미가 없게 되어 버렸습니다. 하드웨어의 발전속도는 이미 소프트웨어의 발전속도를 앞 질러 가고 있기 때문입니다.

 

자바는 현재 웹, 임베디드, 모바일 등 셀수 없이 많은곳에서 쓰이는 프로그래밍 언어 입니다. 

프로그래밍을 하던 안하던 이런 IT 지식 알아두면 도움이 되겠죠?

 

 

 

 

 

이미지 / pixabay

 

 

 

 

 

 

객체? 객체지향은 또 뭡니까?

 

프로그래밍을 배울때 단골 손님으로 등장하는 말이 객체지향 입니다. 일단 말이 어렵습니다. 생소합니다.

 

 

"객체? What?"

 

 

Object-Oriented-Programming:OOP 는 컴퓨터 프로그래밍 패러다임 중의 하나 입니다. 

OOP는 사실 유행처럼 번져서 지금은 흔하게 쓰이는 패러다임이 되어 버렸습니다. 

초기의 순차적이고, 명령 형태의 프로그래밍 에서 벗어나 독립된 단위 즉 “모든것을 객체” 로 보는 형태 입니다. 

문제를 해결하기 위한 모든 대상을 객체로 보는것 이죠. 집, 사람, 자동차, 책상 등등 모든것이 프로그래밍적으로 객체로 판단하는 것이죠.  

 

자바에서는 이 객체는 Class 라는 틀로써 표현할수 있습니다.

객체의 큰 특징으로는 상태(state), 행동(behavior) 를 가진다는 것입니다. 

 

 

“현실세계와 비교해볼까요? “

 

 

자동차라는 물체는 상태(속성) 을 가집니다. 자동차는 색상을 가지며, 무게를 가지고, 생산년도를가지고요… 등등 

그렇다면 행동은 무엇이 있을까요? 자동차는 가만이 있지 않죠. 달릴수 있습니다. 멈출수 있습니다. 라이트도 켜집니다. 크락션이 울리기도 하구요. 객체지향적 프로그램이란 바로 이러한 객체들이 무수히 많이 만들어지고 서로간에 대화(메세지의 전달)를 나누게 됨으로 인해 프로그램이 동작하게 되는것 이죠. 우리 현실세계와 비교해보면 쉽게 생각할수 있습니다. 

 

 

그럼 다음장에서 클래스에 대해서 본격적으로 알아봅시다~!