반응형

[Oracle Java Tutorial을 읽고 순서에 의해 정리한 후 본인의 경험과 이해를 바탕으로 작성된 글임을 밝힌다.]

[Java Tutorial, 자바 프로그래밍 기초 배우기, Java Programming, 자바 튜토리얼]

1강과 2강을 통해서 간단하게 HelloWorld 프로그램을 코딩하고 컴파일한 후 실행까지 해보았다.

2019/06/03 - [Software/Java] - [Java_Tutorial]2강-시작하기 [주석, comment, 자바 프로그래밍 기초 , 자바 튜토리얼]

 

[Java_Tutorial]2강-시작하기 [주석, comment, 자바 프로그래밍 기초 , 자바 튜토리얼]

[Oracle의 Java Tutorial을 읽고 순서에 의해 정리한 후 본인의 경험과 이해를 바탕으로 작성된 글임을 밝힌다.] [Java Tutorial, 자바 프로그래밍 기초 배우기, Java Programming, 자바 튜토리얼] 1강에 이어 계..

tiboy.tistory.com

그럼 반은 끝낸 것과 같다. 이번 내용은 자바(Java)의 가장 중요한 특징 중 하나인 객체지향에 대해 이야기해본다.객체지향 프로그래밍의 개념을 알아야 자바(java) 프로그래머라고,자바(java)를 사용할 수 있다고 말할 수 있는 것이다. 사실 언어의 가장 중요한 특징을 이해하지 않고 코딩을 한다는 것은 큰 문제를 만들 수 있다. 예전에 만난 개발자 중 본인은 C 언어만 사용해서 개발을 했다는 초급 개발자를 만난 적이 있었다. 그래서 자바는 처음 접하지만 잘할 수 있다고 해서 같이 일한 적이 있었다. 정말 열심히 했다. 야근에 주말근무에 철야까지 해가면 뭔가를 열심히 만들고 있었다. 하지만 결과는 참혹했다. 결과물이 전혀 없었던 것이다. 상담을 해보니 C 언어 방식만 가지고 자바(Java)를 이해할 수 없다는 것이다. 즉 객체지향과 웹에 대한 이해가 부족해서 제자리 맴돌기만 하고 있었는데 더 큰 문제는 의사소통도 한몫했다.안되면 미리 얘기해서 지원을 받았어야 하는데 계속 잘하고 있다고 해서 좀 지켜봤는데 뭔가 이상해서 확인하다 발견된 것이었다. 프로그램을 만든다는 것은 본인의 자부심이 필요한 건 맞지만 팀과 함께 하는 것이면 상황 공유와 의사소통은 매우 중요한 것이다. 거기서 창피함이나 자존심은 팀에게 해가 될 뿐이다. 이 부분은 꼭 잘 알았으면 한다.

 

 

이제 객체지향 프로그래밍의 개념에 대해 하나씩 알아보자.

객체란 무엇인가? (What is an Object?)

객체(Object, 물체)는 객체지향 기술을 이해하는데 중요한 역할을 한다. 사실 영어로 말하는 객체는 Object. Object는 물체를 말한다. 이 부분은 프로그래밍 언어에서는 물체가 아닌 객체라는 용어로 사용한다. 이 객체는 우리 주변에도 많다. 컴퓨터, 키보드, 마우스, 자전거, 오토바이, , 돈 등 우리는 물체로 인식한다.

자전거에 대해 같이 생각해 보자. 자전거로 알 수 있는 정보는 현재 기어의 단수, 현재 속도 등 상태를 알 수 있고 페달 구르기, 브레이크 잡기 등 액션(행동)을 할 수 있다. 즉 자전거로 할 수 있고 알 수 있는 정보인 것이다. 텔레비전(TV)도 보자. 현재 음량상태, 채널상태, 전원켜짐상태 등의 상태 정보가 있고 채널 바꾸기, 음량 조절하기, 전원 끄고 켜기 등의 액션(행동)을 할 수 있다. 이 정보를 보면 객체에는 상태와 행동(액션)의 두가지 특징이 있다는 걸 알 수 있다.

마찬가지로 자바(Java)에서의 객체도 상태(state)와 행동(behavior)의 두가지 특징이 있다. 소프트웨어의 객체도 실제 자전거, 텔레비전(TV)의 객체와 비슷한 개념을 가지고 있다는 의미이다.

정리하면 소프트웨어에서 객체는 상태와 행동을 가지고 있고 상태(state)는 필드(fields) 또는 변수(variables)이고 행동(behavior)은 메서드(method) 또는 함수(function)로 사용한다.

그럼 필드(변수)는 무엇인가? 어떤 값을 담을 수 있는 것이다. 예를 들어보자. 은행 고객이라는 객체를 만들었다고 하자. 은행 고객은 이름, 주민번호, 주소, 계좌번호 등의 정보를 가지고 있고 입금, 출금, 잔액확인 등의 행동을 할 수 있다. 여기서 필드로 사용할 수 있는 것은 이름, 주민번호, 주소, 계좌 등이다. 고객 이름을 필드(변수)로 만든다면 custName 또는 customer_Name 등 프로젝트의 명명 규칙에 맞게 만들면 된다. 여기에 값을 담는다면 실제 고객 이름을 넣으면 된다.

custName = “홍길동

여기서 custName 을 필드 또는 변수라고 하는 것이다.

다음으로 메서드(함수)는 무엇인가? 함수는 중학교나 고등학교 수학에도 나오는데 바로 그 함수와 같은 의미이다. 메서드(함수)는 내부 상태(필드)와 객체 간 통신을 위한 기본 방법이 제공된다. 여기에는 객체지향 프로그래밍의 핵심 원리 중 하나인 데이터 캡슐화를 이용할 수 있다. 내부 상태 숨기기와 객체 메서드를 통해서만 모든 상호작용 실행을 필요로 하는 것이 바로 데이터 캡슐화(, 소중히 보호함, data encapsulation)이다.

소프트웨어 객체는 많은 이점을 제공한다. 예를 들어

  1. 모듈화 : 객체를 위한 소스 코드는 다른 객체들을 위한 소스 코드와 독립적으로 코딩되고 유지될 수 있다.

  2. 정보 숨기기 : 오직 객체의 메서드로만 상호작용을 하므로 내부 구현 상세내역은 외부 환경으로부터 숨겨진 상태를 유지한다.

  3. 코드 재사용 : 누군가 이미 관련 객체를 구현했다면 그 객체를 사용할 수 있다.

  4. 쉬운 연결과 디버깅 : 특정한 객체에 문제가 있는 경우 간단하게 제거하고 다른 객체로 쉽게 교체할 수 있다. 즉 부분이 문제가 있는 경우 전체를 다시 조정하는게 아니라 부분만 적절하게 교환하면 된다는 의미이다.

즉 객체를 이용하면 개별적이고 독립적이므로 부품처럼 사용할 수 있다는 의미이다. 우리 실생활에 쉽게 비교할 수 있는 건 스마트폰이다. 국내 생산(L, S) 스마트폰을 보면 스위치 불량인 경우 서비스센터에 가져가면 스위치만 교체해 준다. 하지만 아*폰의 경우는 수리나 부품 교체를 안해주고 리퍼로 교환해 준다. 국내 생산 폰은 객체의 모듈화를 잘 활용한 것이다.

2019/06/08 - [Software/Java] - [Java_Tutorial]4강-자바 언어 배우기, 클래스란? [객체지향 프로그래밍 개념, 자바 프로그래밍 기초 , 자바 튜토리얼]

 

[Java_Tutorial]4강-자바 언어 배우기, 클래스란? [객체지향 프로그래밍 개념, 자바 프로그래밍 기초 , 자바 튜토리얼]

[Oracle의 Java Tutorial을 읽고 순서에 의해 정리한 후 본인의 경험과 이해를 바탕으로 작성된 글임을 밝힌다.] [Java Tutorial, 자바 프로그래밍 기초 배우기, Java Programming, 자바 튜토리얼, 객체지향 프로..

tiboy.tistory.com

다음은 클래스에 대해 알아본다.

반응형
반응형

[OracleJava Tutorial을 읽고 순서에 의해 정리한 후 본인의 경험과 이해를 바탕으로 작성된 글임을 밝힌다.]

[Java Tutorial, 자바 프로그래밍 기초 배우기, Java Programming, 자바 튜토리얼]

자바(Java)를 접 한지 벌써 20년이 되었다. 실전에서 사용한 건 15년이 돼간다.나의 첫 자바 프로젝트는 2004S*사의 모 사이트였다. EJB 환경에 JSP로 구현된 웹사이트였는데 지금 생각하면 부족함이 많았었다. 특히 델파이나 파워빌더 또는 비주얼 베이직으로 프로젝트를 했던 나에게 웹이란 생소했고 환경을 이해하고 코딩을 하기 전까지 많은 어려움이 있었다. 그래도 끝까지 포기하지 않고 이제는 자바 개발자라는 신념을 가지고 열심히 노력해서 지금까지 개발자로서 잘 지내고 있다.

많은 자바 프로젝트를 하면서 느낀 점이 있다면 많은 개발자들이 자바의 여러 기능의 개념을 잘 모르고 선 개발자들이 만든 소스를 그대로 복사해서 그대로 사용하거나 약간 수정해서 사용하는 경우가 많다는 걸 알았다. 그래서 조금이라도 문제가 발생하면 해결하는데 고생하는 걸 봐왔다. 기본 원리를 잘 이해하고 사용하면 편리하면서 강력한 프로그래밍을 할 수 있게 된다. 물론 선 개발자들이 만든 소스를 활용하는게 나쁘다는 건 아니다. 잘 짜여진 코드를 이해하고 상황에 맞게 사용하면 시간도 절약되고 선 개발자들의 노하우도 익히게 되어 장점이 많다. 하지만 그냥 내용도 잘 모르고 나쁜 코드임을 인식 못하고 사용하는 경우도 있기에 이런 상황이 나중에 큰 문제를 일으킬 수 있다는 걸 알아야 한다.

 

 

지금부터 기본 개념을 잘 익혀서 프로젝트에서 능력을 발휘하길 바란다. 이 블로그에서 게시할 자바 튜토리얼은 오라클의 자바 튜토리얼에 나의 경험을 덧 붙여 설명을 할 것이다. 자바 프로그램을 처음 접하거나 이미 접했지만 초급이라 좀 더 강한 기초를 필요로 하는 초급 개발자에게 도움이 되길 바라며 게시를 해 본다.

많은 도움이 되길 바라며~

자바 튜토리얼 (자바 튜토리얼Java Tutorial )

자바 프로그래밍 기초 배우기 (Java Programming, )

 

  1. 시작하기

간단한 역사를 보면 자바는 선 마이크로시스템즈의 제임스 고슬링이 개발한 객체지향 언어이다. 20094월 선 마이크로시스템즈가 오라클에 인수 합병되면서 자바의 권리와 유지보수는 오라클로 넘어갔다.

자바 기술(Java Technology)는 프로그래밍 언어와 플랫폼을 의미한다.

자바 프로그래밍 언어는 고차원 언어로 다음과 같이 요약할 수 있다.

간단하다, 객체지향. 분산, 멀티쓰레드, 다이나믹, 보안, 높은 성능, 견고함, 이식성, 아키텍처 중립성.

이런 많은 능력을 가진 자바 프로그래밍 언어는 여러분이 개발하는데 즐거움을 줄 것이다. 위의 자바 특징은 앞으로 자바 프로그래밍을 익히다 보면 알게 될 것이다.

자바를 프로그래밍 한다는 것은 자바 언어로 명령어를 이용해서 프로그램을 만든다는 것이다. 그 방식을 설명해 보겠다.

우선, .java 확장자를 가진 텍스트 파일을 만들어야 한다. 물론 자바 언어 규칙에 맞게 만들어야 한다. 이 소스 파일은 javac 라는 명령어를 통해 컴파일되면서. class확장자를 가진 파일로 바뀐다. 이 파일은 우리는 이해할 수 없는 컴퓨터용 언어인 바이트코드(bytecodes)로 변형된다. 이 바이트코드는 자바 가상 머신(Java Virtual Machine, JVM)가 읽을 수 있는 언어이다. JVM을 이용한 자바 런처가 여러분이 작성한 프로그램을 실행한다.

JVM의 능력은 대단하다. 어느 운영체제에서 개발했더라도 다양한 운영체제(윈도우즈 , 유닉스, 리눅스 등등)에서 이 JVM만 있다면 실행이 가능하기 때문이다. 이 부분이 자바의 강점 중 하나이다. 운영체제라는 환경의 영향을 받지 않는다는 의미이다.

자바 플랫폼에 대해 알아본다. 플랫폼은 프로그램이 작동하는 하드웨어나 소프트웨어 환경을 의미한다. Microsoft Windows, Linux, Unix, Mac OS 같은 운영체제도 바로 플랫폼이 된다. 이 환경에서 우리가 만든 프로그램이 작동되는 것이다.

자바의 플랫폼은 다음과 같다.

  1. JVM (자바 가상 머신)

  2. API (자바 응용 프로그래밍 인터페이스, API)

JVM은 이미 설명을 했고 API는 무엇일까?

API는 미리 만들어 둔 컴포넌트의 모음이다. 이 컴포넌트를 활용해서 자바 프로그램을 쉽게 사용할 수 있는 것이다. 유용한 API는 계속 개발되고 버전이 올라가게 된다.

그러면 자바 기술(JAVA Technology)로 할 수 있는 것은 무엇이 있을까?

우선 개발 툴은 여러분이 개발하는 데 있어 필요한 모든 것을 제공한다. 컴파일, 실행, 모이터링, 디버깅, 그리고 여러분의 개발에 대한 문서를 만드는 기능까지 제공한다. Javac 컴파일러, java 실행, Javadoc 문서툴까지 말이다.

다음으로 API이다. 자바 프로그램에 필요한 핵심 함수들을 제공한다. 유용한 클래스들과 기초 객체, 네트워크, 보안, XLM 활용, 데이터 베이스 접속 등등 말이다. 이 핵심 API는 방대하다. 해당 API 목록과 사용법은 문서로 제공된다.

기타 여러가지 기술이나 툴킷을 제공하지만 기본은 우선 기초적인 부분만 알고 넘어간다.

자바의 기본 개념과 특징에 간략하게 알아보았고 이제 직접 코딩을 해보겠다. 프로그램은 눈으로 봐서도 안되고 상상으로 코딩해도 안된다. 직접 키보드를 두들겨서 프로그램(코딩)을 짜 보고 실행해 보고 오류 발생 시 원인을 찾아 수정도 해봐야 실력이 는다. 골프 선수가 동영상만 본다고 해서 절대 실력이 늘지 않는다. 직접 휘둘러 봐야 한다. 것도 수많은 반복적 훈련이 필요하다. 여러분도 능력 있는 프로그래머가 되고 싶다면 지금 당장 키보드를 두들겨 가며 직접 프로그램(코딩)을 짜고 또 짜면 된다.

이 글을 읽는 여러분은 대부분 windows 환경이라고 생각한다. 간혹 UnixLinux 환경도 있겠지만 어짜피 프로그래밍 언어는 같다. 이 글은 MicroSoft Windows 10 환경을 기반으로 작성되었다.

우선 자바 프로그램을 작성하기 앞서 JDK 8과 이클립스가 필요하다. 툴은 다른 것을 써도 된다. 보통 이클립스를 많이 사용하므로 이클립스/콘솔 환경을 겸해서 설명을 하겠다.

그럼 프로그램을 어떻게 짜야하는가?

  1. .java 확장자를 가지는 소스 파일을 만든다.

  2. Javac 로 컴파일 해서 .class 파일을 만든다.

  3. java로 실행한다.

그럼 프로그램을 시작할 때 단골로 등장하는 HelloWorld! 프로그램을 만들어 본다.

이미지로 넣는 이유는 복사해서 사용하지 말고 직접 코딩해 보라는 의미이다. 꼭 직접 코딩을 하기 바란다.

해당 프로그램을 작성하고 HelloWorld.java로 저장한다. 주의할 점은 클래스명과 파일명은 같아야 한다. (HelloWorld.java == class HelloWorld)

Javac HelloWorld.java 로 컴파일을 하면 빈칸 하나 나오고 넘어간다. 오류가 없다는 뜻이다.

그럼 실행을 해보겠다.

Java HelloWorld 로 실행을 하면 HelloWorld!가 표출됨을 확인할 수 있다. 첫번째 프로그램은 성공적으로 실행되었다.혹시 오류가 나면 댓글로 문의 바람)

 

계속~

2019/06/03 - [Software/Java] - [Java_Tutorial]자바 프로그래밍 기초 배우기 (JDK8, Java Programming, 자바 튜토리얼) 2강

 

[Java_Tutorial]자바 프로그래밍 기초 배우기 (JDK8, Java Programming, 자바 튜토리얼) 2강

[Oracle의 Java Tutorial을 읽고 순서에 의해 정리한 후 본인의 경험과 이해를 바탕으로 작성된 글임을 밝힌다.] 2019/06/01 - [Software/Java] - [Java_Tutorial]자바 프로그래밍 기초 배우기 (JDK8, Java Progra..

tiboy.tistory.com

 

반응형