Concept of OOP, Java Basic
Object-Oriented Programming
Object란, 소프트웨어 상에서 서로 관련이 있는 상태와 기능들을 모아 놓은 묶음이라고 할 수 있다. Java에서 Object의 상태는 Field로 나타내며, 오브젝트의 행동(기능)은 Method로 나타난다. 이러한 object가 주축이 되는 프로그래밍 방식을 Object-Oriented Programming (OOP)라 하며, OOP에서는 전체 프로그램의 동작을 오브젝트 단위로 모듈화하고 코드를 체계적으로 재사용함으로써 다양한 이득을 누릴 수 있다.
Class란, object가 만들어지는 청사진과 같다. Java에서 모든 오브젝트는 class에 기반하여 만들어지며, 이를 instance라 한다. 특히 Inheritance(상속)의 개념이 존재하여, 한 class가 다른 class로부터 공통적으로 사용하는 field나 method를 물려받아 올 수 있다. 상속에는 extends 키워드를 사용한다.
Interface란, 서로 관련이 있는 method들의 모임으로 class가 외부 세계와 소통하는 방식을 규정한다. 어떤 class가 한 interface의 모든 method에 대한 내용을 가지고 있다면, 그 class는 그 interface를 implement한다고 하며, interface 상속에는 implements 키워드를 사용한다.
Package란, 관련 있는 class들과 interface를 모아 놓고 그들에 접근할 수 있도록 하는 하나의 namespace를 말한다.
Variables and Data Types
Variable(변수)이란, 프로그래밍 언어에서 이름이 붙여진 메모리상의 위치를 말한다. Variable에는 다음 종류가 있다.
Variable types
- Instance variables (instance의 non-static fields)
- Class variables (class의 static fields)
- Local variables (method 수행 중 저장되는 임시적인 state)
- Parameters (method, class 등을 호출할 때 넘겨지는 매개변수)
Java가 지원하는 Primitive data type으로는 byte, short, int, long, float, double, boolean, char이 있으며, java.lang.String 클래스를 이용해 문자열 변수를 다룰 수 있다.
Literal이란, Java 소스 코드 상에 나타나는 variable이 아닌 고정된 값을 말한다. true, 'A', 10, 0x1a 등이 literal에 해당한다.
Array란 자료형이 모두 같은, 정해진 개수의 값들을 묶어서 저장하는 object이다. java.util.Arrays 클래스를 통해 다룰 수 있다.
variable끼리의 연산에는 다른 프로그래밍 언어에서와 같이 여러 operator를 사용할 수 있다. Java에서는 특별하게 class와 관련하여 instanceof라는 operator를 제공한다. 사용 및 출력 예시는 다음과 같다.
public class Main {
public static void main(String[] args) {
Animal cat = new Cat();
Animal ani = new Animal();
System.out.println(cat instanceof Animal); // true
System.out.println(cat instanceof Cat); // true
System.out.println(ani instanceof Animal); // true
System.out.println(ani instanceof Cat); // false
System.out.println(cat instanceof myInterface); // true
System.out.println(ani instanceof myInterface); // false
}
}
interface myInterface { }
class Animal{ }
class Cat extends Animal implements myInterface { }
Java Syntax
Expression이란 variable, object, method 호출 등으로 이루어져, 결과적으로 계산을 통해 하나의 값을 얻을 수 있는 구문을 말한다.
Statement란 소프트웨어에서 하나의 완결된 실행 단위이다. 각 Statement는 세미콜론(;)으로 구분되며, 그 기능에 따라 declaration, assignment, method invocation, control flow statement 등이 있다.
Block이란 중괄호({ }) 사이에 들어가 있는 statement들의 묶음이다. if, switch, while, do-while, for 등의 구문들에서 block이 사용된다.