티스토리 뷰

반응형


* 본 포스팅은 인피니티 북스의 Power JAVA 2판을 참고하여 작성되었습니다.

* 개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있음을 밝힙니다.



객체 지향 이란?
객체 지향 프로그래밍(Object-Oriented Programming: OPP)은 실제 세계가 객체(object)들로 구성되어 있는 것과 비슷하게 소프트웨어도 객체 단위로 작성하는 방법이다. 우리가 살고 있는 실제 세계에는 사람, 동물, 건물, 자동차, 시계, 토스터, 세탁기 등의 많은 객체가 존재한다. 객체들은 객체 나름대로의 고유한 기능을 수행하면서 다른 객체들과 상호 작용한다. -- Power Java 2판 139p
객체 지향 프로그래밍은 데이터와 절차를 하나의 덩어리(객체)로 묶어서 생각하는 방법이다. 자바는 객체 지향 기법을 지원하지만 객체 지향을 사용한다고 해서 절차 지향 프로그램을 하지 않는다는 것이 아니다. 실제로 객체의 내부를 설계할 내느 절차 지향 프로그래밍을 사용한다. -- Power Java 2판 141p


즉, 객체 지향 프로그래밍이란 각각의 컴퓨터 부품을 만들고 그 부품들을 조립하여 컴퓨터를 만들 듯이 객체를 만들고 그 객체들을 조립하여 소프트웨어를 만드는 기법이다. 객체 지향 프로그래밍의 특징은 다음과 같다.

캡슐화(encapsulation) : 관련된 데이터와 알고리즘(코드)이 하나의 묶음으로 정리

상속 : 이미 작성된 클래스(부모 클래스)를 이어받아 새로운 클래스(자식 클래스)를 생성하며, 기존의 코드를 재사용할 수 있는 강력한 기법



다형성 : 객체가 취하는 동작이 상황에 따라 달라지는 것의 의미 



객체 (Object)

객체는 객체 지향 기술의 핵심이다. 객체 안의 변수를 필드(field)라 부르고, 객체 안의 함수를 메소드(method)라 부른다. 하나의 객체는 필드와 메소들 이루어진 소프트웨어의 묶음이다.


메시지 (Message)객체는 메시지를 통해 다른 객체와 통신하고 상호 작용한다. 대체로 매개변수(parameter)의 형태로 전달된다.

Car.setSpeed(100);

Car : 메시지를 받는 객체

setSpeed : 메시지의 이름

(100) : 메시지의 매개변수


클래스 (Class)

클래스란 특정한 기능을 가진 객체를 생성하게 해주는 설계도라고 할 수 있다. 클래스로 부터 만들어진 객체를 해당 클래스의 인스턴스(instance)라고 한다. 클래스는 객체에 포함될 변수와 메소드를 정의해야 한다. 자바에서 객체를 생성하려면 new 연산자를 사용해야 한다.

CarTest.java

class Car {

    String color; // 필드 정의
    int speed;
    int gear;

    void print() { // 메소드 정의
        System.out.println("(" + color + ", " + speed + ", " + gear + ")");
    }
}

class CarTest {

    public static void main(String[] args) {
        Car myCar new Car(); //객체 생성

        myCar.color = "red"; //객체 필드 변경
        myCar.speed = 0;
        myCar.gear = 1;

        myCar.print(); //객체 메소드 호출
    }
}

* 자바에서는 일반적으로 하나의 소스 파일에는 하나의 클래스만을 담는 것이 원칙이다. 만일 하나의 파일에 여러 클래스가 있을 경우 클래스 중 main()이 들어있는 클래스의 이름과 소스 파일명이 같아야한다.


기초 변수(primitive variable) : int, double, char 등 기초 자료형을 가지는 변수

참조 변수(referece variable) : 객체를 참조될때 사용되는 변수



메소드 (Method)

클래스 안에 정의된 함수


반응형

'개인공부 > JAVA' 카테고리의 다른 글

Java 08 : 필드와 메소드  (2) 2014.07.30
Java 07 : PowerJava2 p.169 LAB 1  (0) 2014.07.30
Java 06 : 문자열(String) 클래스  (0) 2014.07.30
Java 04 : 지나가는 switch 문 예제  (0) 2014.07.16
Java 03 : 변수  (5) 2014.07.14
Java 02 : 자바 프로그래밍 기초  (0) 2014.07.14
Java 01 : 자바 소개, 개발 도구  (1) 2014.07.14
프로필사진

Yowu (Yu Yongwoo)

흔한 Node.js/Java 백엔드 개발자입니다
Ubuntu와 MacOS 데스크탑 개발 환경을 선호합니다
최근에는 vscode와 IntelliJ를 사용하고 있습니다
vscode에는 neovim, IntelliJ는 ideaVim
개발용 키보드는 역시 HHKB Pro 2 무각입니다
락 밴드에서 드럼을 쳤습니다

최근에 올라온 글
최근에 달린 댓글
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함
Total
Today
Yesterday