반응형

[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, 자바 튜토리얼]

1강에 이어 계속 설명을 해본다.

다시 한 번 강조하지만 직접 코딩하는게 정말 중요하다.

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

 

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

[Oracle의 Java Tutorial을 읽고 순서에 의해 정리한 후 본인의 경험과 이해를 바탕으로 작성된 글임을 밝힌다.] 자바(Java)를 접 한지 벌써 20년이 되었다. 실전에서 사용한 건 15년이 돼간다.나의 첫 자바 프로..

tiboy.tistory.com

지금 컴퓨터 앞에 앉아서 코딩 준비를 했다면 2강을 시작해 본다.

그럼 방금 만든 프로그램을 다시 살펴본다. 주석부분을 추가했다.

먼저 주석을 살펴보겠다. 주석은 프로그램에 영향을 주지 않는다. 단순히 코딩만 하면 다른 사람이 봤을 때 이해하거나 분석하기 힘들다. 심지어 본인이 만든 프로그램도 추후 다시 봤을 때 왜 이렇게 만들었을까? 라며 고민할 수도 있다. 그래서 이정표와 설명서 같은 내용이 필요하다. 하지만 무작정 설명을 쓰면 컴파일러는 오류를 뱉어 낸다. 문법이 잘못되었다고 판명되는 것이다.

System.out.println(“HelloWorld!”); HelloWorld를 출력한다.

이렇게 설명을 붙이면 컴파일러는 HelloWorld를 출력한다. 이 부분을 코드로 오해한다. 그리고 이런 코드는 존재하지 않는다며 오류가 난다.

그래서 주석이라는 기능이 필요한 것이다. 주석은 총 3가지 방식으로 사용할 수 있다.

가장 쉽게 사용하는 주석 방식은 슬래쉬 2개인 // 이다.

System.out.println(“HelloWorld!”); // HelloWorld를 출력한다.

이렇게 //를 붙이면 // 뒤의 텍스트는 주석으로 인식되어 오류를 발생시키지 않는다. //는 한 줄로만 사용할 수 있다.

 

 

두번째 방식은 범위를 지정할 수 있는 주석이다. /*로 시작해서 주석 내용을 쓰고 */로 닫으면 그 사이는 주석으로 인식되어 오류를 발생시키지 않는다. 또한 //와 다르게 */로 닫기 전까지 여러 행도 주석으로 처리할 수 있다.

System.out.println(“HelloWorld!”); /* HelloWorld를 출력한다.

그러니깐 println 은 캐리지리턴을 지원한다. */

마지막으로 문서주석이 있다. 문서주석이란 Javadoc 문서로 API를 만들고 싶을 때 사용하면 된다. 자체적으로 컴포넌트를 만들어 개발팀에 제공하고 해당 컴포넌트에 대한 설명 문서를 만들고 싶을 때 사용하는 것이다. 사용법은 /** 로 시작해서 */로 닫으면 된다.

주석은 설명을 하기 위해 사용도 하지만 디버깅하거나 코드를 수정할 때 이력관리용 또는 임시 처리를 할 때도 유용하다. 기존 소스를 잠시 사용하지 않고 다른 방식으로 코딩해서 테스트해보고 싶을 때 기존 소스를 지우지 않고 주석으로 막아 두면 나중에 다시 사용하기 편하다. 주석으로 처리된 코드는 당연히 컴파일러가 무시한다.

// If (a.equals(“b”)) {

If (“b”.equals(a)) {

System.out.println(“B”);

}

다음은 class HelloWorld { } 에 대해 설명한다. 그전에 Class(클래스)가 무엇인지는 따로 자세히 설명할 것이며 여기서는 코딩 방식에 대해서만 설명한다. Class의 이름(name) 은 파일 이름과 같다. 꼭 그래야 한다. 그리고 클래스 명은 영문으로 사용하며 첫 글자는 대문자로 시작한다. "{" 로 시작해서 " }"로 끝나며 그 사이에 필요한 코딩을 하면 된다. “class”소문자로 사용한다.

class name {

}

다음 main Method이다. (메인 메소드) 메인 메서드는 자바 애플리케이션의 출발점이다. 프로그램을 만들면 실행을 해야 되는데 가장 먼저 찾는 게 main 메소드이다. C, C++ 등의 언어도 마찬가지로 main 메소드(함수)가 있다. 우리가 java HelloWorld로로 프로그램을 실행하면 자바 런처는 실행한 클래스에서 main 메소드를 찾는데 만약 없다면 오류가 난다. 빌딩에 들어 갈려면 먼저 로비로 가야 하는 원리이다.

public static void main(String[] agrs){

}

이렇게 생겼다. 가장 먼저 나오는 public는 공용으로 어디서든 호출할 수 있다는 의미이다. 두번째 static는 별도로 객체를 생성해서 호출하지 않아도 되는 공용 메서드라는 의미이다. 세번째 void는 결과가 없다는 의미이다. 보통 함수를 보면 입력값을 넣으면 출력 값이 있는데 void는 출력값이 없다는 것이다. 네번째 main 은 메소드의 이름(name)이다. 프로그램이 실행되면 가장 먼저 찾는 게 main이다. 그리고 (String[] args)는 메소드의 입력 파라미터이다. String[](문자열 배열) 형태로 이름은 argsmain 메소드 안에서 사용한다는 의미이다. 메소드도 클래스와 마찬가지로 { } 사이에 필요한 코딩을 하면 된다.

프로그램이 실행할 때 main을 찾아야 하는데 외부에서 실행한 만큼 어디서든 실행될 수 있게 해야 하므로 public 이어야 하고 객체를 별도로 생성하지 않아도 실행할 수 있도록 static 형태어야 한다. 실행 메소드이므로 반환 값이 있으면 안 된다.그래서 void로 사용한다. 마지막으로 입력 파라미터는 문자 배열로 다음과 같이 사용할 수 있다.

위 프로그램에서 9, 10번 라인을 보면 agrs[0], args[1]의 값을 출력하도록 코딩했다. argsmain입력 파라미터이다.

java HelloWorld args[0] args[1] args[2] … 이렇게 클래스명 뒤에 파라미터 값들을 한 칸 띄고 넣어주면 main 메소드에서 사용할 수 있다. 이 프로그램은 args[0]==Good, args[1]==Morning로 입력했다. 결과는 잘 나왔다.

해당 키워드 (public, static, String )은 나중에 설명을 할 것이므로 당장 저 키워드가 이해가 안가도 괜찮다. 지금은 main 메소드에 대해 설명하기 위해 간략하게 예를 들어보았기 때문이다. 본인도 처음 프로그래밍 언어를 공부할 때 이 main메소드를 이해하는데 어려움을 느꼈었다. 걱정하지 마라. 몇 번 사용하면 이해가 될 수 밖에 없다.

궁금한 점이나 내용상 오류가 있으면 댓글 바란다.

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

 

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

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

tiboy.tistory.com

시작하기 끝. 다음은 자바 언어 배우기이다.

반응형