반응형

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

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

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

 

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

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

tiboy.tistory.com

이제 객체가 무엇인지 이해가 되었을 것이다. 객체는 상태와 행동을 가지고 있다. 데이터 캡슐화로 메서드 내부의 변수와 로직을 외부로부터 숨길 수 있다.

2. 클래스란? (What is a Class?)

클래스(Class)는 블루 프린트(blue print)이다. 그리고 객체를 만드는 틀이다. 우리가 보험사 프로젝트를 시작했다고 하면 먼저 고객을 가입할 수 있는 구조를 만들어야 한다. 모든 고객은 보험사에서 필요한 정보를 가지고 있다.. 이름, 성별, 주민번호, 주소, 나이, 휴대전화 번호 등이 있을 것이다. 고객의 기준이 만들어지고 고객은 최소 1명에서 수십, 수백 그 이상이 존재할 수 있다. 이 고객 객체를 만들기 위해서는 위 속성(이름, 성별 등)을 가지고 있는 기본 틀이 있어야 된다. 그게 바로 클래스(Class). 실제 보험사에 고객이 가입도 하고 보험금을 청구한다고 가정해 본다.

 

 

오프라인에서 H사의 실손보험(실비보험)을 A 씨에게 판매해서 고객을 유치한 B 씨는 회사 전산 시스템을 이용해 A 씨를 고객으로 가입한다. 고객 등록 페이지에서 고객에 대한 정보인 이름, 주민번호, 성별, 주소, 휴대전화번호, 가입일자, 보험상품 등을 화면에 입력한다. 그리고 저장 버튼을 누른다. 해당 정보는 전산 시스템으로 전송되고 고객정보 클래스는 객체를 하나 생성한다. 화면에서 전달된 고객 정보를 객체의 메서드를 통해 필드(변수)에 매칭 된 필드(변수)를 이용해 보험사 전산 시스템의 데이터베이스(DB, DataBase)에 등록하는 기능을 수행한다. 이제 A 씨의 정보는 H사의 데이터베이스에 저장되었다. 이제 언제든 필요시 A 씨의 정보를 확인할 수 있게 되었다. 물론 확인 시에도 해당 객체를 생성하고 정보를 읽어 객체에 매핑 후 화면에 보여주면 된다. 5명의 보험설계사가 동시에 고객을 각각 가입시켜도 해당 고객 클래스의 객체는 5개가 독립적으로 만들어지고 각각 객체에 해당 고객들의 정보가 매핑되고 처리되므로 충돌의 문제는 발생하지 않는데 이것이 객체지향 프로그래밍의 장점 중 하나다.

그럼 보험사 고객 클래스를 예시로 간단하게 만들어 본다.

InsCustomer Class를 보면 main 메서드가 없다. 이유는 해당 클래스는 객체를 생성하기 위한 클래스이기 때문이다. Main 메서드가 있는 클래스는 프로그램의 시작을 담당한다고 했다. main 메서드에서 고객 클래스의 객체를 사용할 수 있는 것이다.

이제 클래스가 무엇인지, 객체가 무엇인지 이해했을 것이다. 우리가 사용한 클래스는 고객 정보를 관리하는 고객 클래스인 메인 메서드가 있는 실행 클래스인 InsSystem 이다.

객체는 InsCustomer에서 만든 customer 가 객체다.

InsCustomer customer = new InsCustomer();

이 구문으로 customer이라는 객체를 인스턴스화 한 것이다.

우리가 기능을 실행하거나 데이터를 처리하기 위해서 각 업무나 기능별로 클래스를 구성하고 관련 객체를 생성해서 시스템을 구성하면 된다. 우리가 자주 사용하는 프로그램은 보통 데이터 처리하는 게 대부분이다. 게임도 데이터 처리로 게임이 진행되는 것이다.

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

 

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

[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

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

반응형