반응형

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

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

2019/06/20 - [Software/Java] - [Java_Tutorial]11강-자바 코딩, 같음 관계 조건 연산자[Operators, 자바 프로그래밍 기초 , 자바 튜토리얼]

 

[Java_Tutorial]11강-자바 코딩, 같음 관계 조건 연산자[Operators, 자바 프로그래밍 기초 , 자바 튜토리얼]

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

tiboy.tistory.com

이번 포스팅은 자바 프로그래밍(Java Programming)을 하기 위한 기본 표현, 구문과 블록에 대해 알아본다.

표현식, 구문, 블럭 (Expressions, Statements, and Blocks)

자바 프로그래밍(java programming)에서 코딩을 하기 위해서는 먼저 표현식을 만들어야 한다. 그 표현식들을 이용해서 구문이 만들어지고 구문들을 묶어 주는 것이 블록이다.

표현식(Expressions)

표현식은 변수, 연산자, 메서드 호출을 만들어 구성하는 것으로 자바 언어 문법을 기반으로 작성된다. 문법에 어긋나면 오류가 난다.

표현식은 기존 예제에서 이미 사용되었다.

Int a = 0;

intArray[0] = 1;

val1 == val2

System.out.println(“val1==val2”);

굵은 부분이 표현식이다. 표현식을 보면 변수에 대한 데이터 타입을 알 수 있다. a = 0에서 a0이라는 값이 할당(“=”)된다. 그럼 a는 숫자형(int type) 변수라는 의미이다. 다른 표현식도 보면 val1 == val2Boolean 타입이고 “val1==val2”String 타입을 나타낸다.

또한 자바 프로그래밍(Java Programming)에서는 복합 표현식도 지원한다. 이는 자바 프로그래밍 뿐 아니라 일반 수학에서 적용되는 부분과 같다. 예를 들어

4*5*7

위 표현식은 사용함에 있어 순서를 바꿔서 계산해도 항상 같은 값이 나오므로 큰 문제가 되지 않는다. 하지만 다음 예제를 보면 순서에 의해 값이 달라지고 그 값에 따라 타입도 달라질 수 있다.

95+5/100

위 연산자는 +보다 /가 우선순위라서 95.05가 된다. 표현식만 보면 정수형(int) 타입이지만 막상 계산을 하면 95.05로 실수형(float/double) 타입이 된다. 하지만

(95+5)/100

표현식의 변수들은 같지만 ( ) 를 씌워서 우선 순위를 변경했다. 위 식의 결과는 1이다. 즉 정수형(int) 타입의 결과가 나온 것이다. ( ) 로 표현식의 타입이 바뀔 수 있다는 것이다. 중요한 것은 표현식을 애매하게 사용해서 개발자 본인 뿐 아니라 다른 개발자에게도 혼선을 줘서는 안된다. 명확하고 간단하면서 가독성이 좋은 표현식을 만드는 것이 가독성에도 좋고 유지보수에서도 중요하다는 것을 잊으면 안된다.

 

 

구문(Statements)

구문은 한 단위를 실행하기 위한 완벽한 구성이어야 한다. 표현식(expressions)는 연산자를 이용한 할당이나 계산식만 만드는 것으로 그 자체가 완벽한 실행 단위는 아니다. 자바 프로그래밍(Java Porgramming)에서 코딩(coding)시 하나의 실행 단위로 문장을 완성하고 한 단위당 완료의 표시로 “;”를 사용한다. 예를 들어

할당 표현식, 증감 연산자(++,--), 메서드 호출, 객체 생성식

int a = 0;

a = 100;

a++;

System.out.println(“abc”);

BankClient bc = new BankClient();

위 구문은 표현식을 이용한 구문이다. 구문(Statements)은 크게 2가지로 구분할 수 있다. 위의 예제와 같은 선언 구문과 제어 흐름 구문이다. 제어 흐름 구문(Control flow statements)은 추후 별도 포스팅 하겠다.

블록(Blocks)

블록은 그룹을 만들 때 사용하는데 구문이 하나도 없거나 (빈 블록) 여러 개의 구문을 묶을 때 사용한다. 그룹은 { } (중괄호)를 사용한다. 예제로 확인해 보자.

Class BlockTest { // 클래스 그룹을 { 로 그룹 시작

Public static void main(String[] args) { // 메인 메서드 그룹 { 로 시작

If (condition) { // if 구문 그룹 { 로 시작

System.out.println(“Test”);

} // if 구문 그룹 } 로 시작

} // 메인 메서드 그룹 } 로 종료

} // 클래스 그룹을 } 로 종료

자바 코딩(java coding)을 위해서 기본적으로 익혀야 할 구문 만들기에 대해 알아보았다. 먼저 필요한 표현식을 구상해서 작성하고 표현식 또는 제어 흐름 구문을 실행 가능 단위로 구성해서 ;로 정리하고 해당 구문들을 그룹화 해서 관리하면 된다.

2019/06/24 - [Software/Java] - [Java_Tutorial]13강-자바 코딩, if else 제어문[Control Flow Statements, 자바 프로그래밍 기초 , 자바 튜토리얼]

 

[Java_Tutorial]13강-자바 코딩, if else 제어문[Control Flow Statements, 자바 프로그래밍 기초 , 자바 튜토리얼]

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

tiboy.tistory.com

다음 포스팅은 제어 흐름 구문(Control Flow Statements)에 대해 알아본다. 이제 점점 자바 프로그래머로 재미를 느끼게 되는 시간이 다가오고 있다. 열심히 공부하고 열심히 코딩하라!

반응형
반응형

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

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

이제 객체와 클래스가 무엇인지 이해가 되었을 것이다. 객체는 상태와 행동을 가지고 있다. 데이터 캡슐화로 메서드 내부의 변수와 로직을 외부로부터 숨길 수 있다. 클래스는 이 객체를 만들 수 있는 틀(청사진)을 제공하는 것이다.

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

 

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

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

tiboy.tistory.com



3. 상속이란? (What is a Inheritance?)

여러분은 상속이 무엇인지 알 것이다. 일상생활에서 상속은 부모로부터 재산을 물려받을 때 상속이라는 단어를 사용한다. 객체지향 프로그래밍에서도 상속의 개념이 있다. 그럼 자바(Java) 프로그래밍에서 상속에 대해 알아본다.

이 전 글에서 우리는 보험사로 예를 들어 설명했다. 보험 상품은 다양하다. 실손보험(실비보험), 생명보험, 화재보험, 자동차보험 등등이 있다. 그리고 해당 보험에도 다양한 옵션의 상품들이 존재한다. 그럼 이들의 공통점이 무엇인지 살펴보자.

1. 보험 일련번호(코드)가 있다.


2. 신규 일자


3. 판매 종료 일자


4. 보험 종류 코드

우선 4가지만 생각해 보자. 4가지는 모든 보험에 공통적이면서 필수적인 정보이다. 물론 각 우선 4가지만 생각해 보자. 위 4가지는 모든 보험에 공통적이면서 필수적인 정보이다. 물론 각 보험마다 가지고 있는 옵션을 다를 것이다. 새로운 보험 그룹과 보험 상품을 만들기 위해서 관련 클래스를 만들어야 하는데 모든 보험상품이 공통으로 가지고 있어야 할 4가지 정보를 각 클래스마다 입력하는 것은 효율적이지 않다. 특히 객체지향 프로그래밍을 한다면 해서는 안 될 행동인 것이다. 이렇게 보험 상품 관련 클래스를 생성할 때 공통이면서 필수인 필드(변수)가 존재한다면 어딘가 자동으로 만들어 주면 편하지 않겠는가?

 

 



그래서 이 공통이면서 필수인 정보를 공유하기 위해 공통 클래스를 만든 뒤 상속해서 사용하면 된다. 이 공통 클래스를 슈퍼 클래스 (Super Class)라고 부른다. 이 슈퍼 클래스를 상속받은 하위 클래스는 (Sub Class)라고 부른다. 이렇게 슈퍼 클래스에 필수적인 필드(변수)와 메서드를 작성하고 서브 클래스에서 상속(Inheritance) 받아 사용하면 효율적이기도 하
고 모든 보험 상품의 필수 데이터와 행동을 사용하게 할 수 있는 것이다.

자바 프로그래밍에서는 주의해야 할 점이 있다. 보험 상품의 공통되며 필수인 필드와 메서드를 가지고 있는 슈퍼 클래스는 하나만 만들 수 있다는 것이다. 2개 이상을 만들어도 클래스는 1개의 슈퍼 클래스만 상속 받을 수 있기 때문에 의미가 없는 것이다. 사용할 수 없다. 모든 보험 상품의 필수 데이터와 행동을 사용하게 할 수 있는 것이다.

자바 프로그래밍에서는 주의해야 할 점이 있다. 보험 상품의 공통되며 필수인 필드와 메서드를 가지고 있는 슈퍼 클래스는 하나만 만들 수 있다는 것이다. 2개 이상을 만들어도 클래스는 1개의 슈퍼 클래스만 상속받을 수 있기 때문에 의미가 없는 것이다. 사용할 수 없다.

우선 보험 슈퍼 클래스를 만들어 본다.

이렇게 4개의 필드와 해당 필드를 입력하고 꺼낼 수 있는 메서드를 구현한 슈퍼 클래스를 이제 보험상품 클래스에서 상속해 보겠다. 상속을 할 때는 extends 키워드를 사용한다.

이렇게 상속받은 클래스 사용 방법은 추후 확인해 보고 우선 상속의 개념과 상속하는 방법에 대해 잘 이해하길 바란다.

InsGoodSubClass는 InsSuperClass의 같은 필드와 메서드를 상속받았고 사용할 수 있게 되었다. 상속으로 서브 클래스는 읽기 쉽게 되었지만 각 서브 클래스에서는 슈퍼클래스의 상태와 행위가 나타나지 않으므로 적절하게 문서화 작업을 할 수 있도록 주의해야 한다.

다음으로 객체지향 프로그램에서 필요한 인터페이스(Interface)에 대해 설명해 보겠다.

2019/06/10 - [Software/Java] - [Java_Tutorial]6강-자바 언어 배우기, 인터페이스(Interface)란? [객체지향 프로그래밍 개념, 자바 프로그래밍 기초 , 자바 튜토리얼]

 

[Java_Tutorial]6강-자바 언어 배우기, 인터페이스(Interface)란? [객체지향 프로그래밍 개념, 자바 프로그래밍 기초 , 자바 튜토리얼]

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

tiboy.tistory.com

객체, 클래스, 상속은 객체지향의 기본 개념이므로 잘 이해하는 게 중요하다. 혹시 그래서 어떻게 실전에서 사용해야 되는지 궁금하다면 앞으로 올라오는 글들을 꾸준히 읽어보면 도움이 될 것이다. 절대 포기하지 말고 같이 나아가길 바란다.

반응형