객체지향

서지우·2023년 7월 6일
0

JAVA

목록 보기
10/28

객체 지향 프로그래밍(OOP, Object-Oriented Programming)

객체 지향 프로그래밍에서는 모든 데이터를 객체(object)로 취급하며, 이러한 객체가 바로 프로그래밍의 중심이 됩니다.

객체(object)란 간단히 이야기하자면 실생활에서 우리가 인식할 수 있는 사물로 설명할 수 있습니다.

이러한 객체의 상태(state)와 행동(behavior)을 구체화하는 형태의 프로그래밍이 바로 객체 지향 프로그래밍입니다.

이때 객체를 만들어 내기 위한 설계도와 같은 개념을 클래스(class)라고 합니다.

현실에 있는 것들 OR 현실에 없는 것들을 프로그래밍 언어에 추상적인 형태로 비슷하게 만들어 놓은 것

객체지향언의 특징

- 기존의 프로그래밍언어와 크게 다르지 않음
- 코드의 재사용이 높음
- 코드의 관리가 쉬워짐
- 신뢰성이 높은 프로그램의 개발을 가능하게 함

class

- 추상적인 설계도, 또는 구체적인 설계도

클래스는 객체의 상태를 나타내는 필드(field)와 객체의 행동을 나타내는 메소드(method)로 구성됩니다.

필드(field)란 클래스에 포함된 변수(variable)를 의미합니다.

메소드(method)란 어떠한 특정 작업을 수행하기 위한 명령문의 집합이라 할 수 있습니다.

자바에서
객체가 가지고 있는 속성을 필드 / 멤버변수 라고 함.(필드라고 많이 씀)

자바 객체가 가지고 있는 기능을 메소드(함수)라고 함.

클래스의 예

클래스(class)

- 차(Car) : 설계도

필드(field)

- car.modelName = "람보르기니"
- car.modelYear = 2016
- car.color = "주황색"
- car.maxSpeed = 350

메소드(method)

- car.accelerate()
- car.brake()

인스턴스(instance)

- 내 차(myCar) : 설계도에 의해 생산된 차량
- 친구 차(friendCar) : 설계도에 의해 생산된 또 다른 차량

즉, 자동차 인스턴스는 모두 위와 같은 필드와 메소드를 가지게 될 것이다.

하지만 각 인스턴스마다 가지고 있는 프로퍼티의 값은 전부 다를 것이다.


추상 클래스

가구, 사람이 상상해서 그 물건의 특성을 떠올릴 수 있지만 실제로 만들 수 없는 것

ex) 의자는 가구의 구체개념이지 가구 자체가 아님


구체 클래스

의자, 사람이 상상할 수 있고 제조법이 명확하다.


object와 instance

① 객체 ≒ 인스턴스

객체는 인스턴스를 포함하는 일반적인 의미

② 인스턴스화

- 클래스로부터 인스턴스를 생성하는 것


object(객체)

- 실제로 존재할 수 있는 것을 상상 
- 만들어질 의자를 머리 속으로 상상

즉, 인스턴스란 메모리에 할당된 객체를 의미합니다.

객체의 구성요소 - 속성과 기능

- 객체는 속성과 기능으로 이루어짐
- 속성은 변수로, 기능은 메서드로 정의함.


instance

- 클래스를 통해 object가 실체화가 된 것 
- 만들어진 의자(new)

인스턴스의 생성과 사용

클래스명 참조변수명; // 객체를 다루기 위한 참조변수 선언
참조변수명 = new 클래스명(); // 객체생성 후, 생성된 객체의 주소를 참조변수에 저장


스코프

주석으로 설명을 해놓았다.

package ch00;

public class Study05 {
    public static void main(String[] args) {
        // 스코프
        // 자바 변수는 기본적으로 블록 단위
        // 어디서든 접근 할 수 있는 변수
        // 함수
        // 함수 내에서 작동하고 벗어나면 없어지는 변수
        // 블록
        // 블록 내에서만 작동하고 벗어나면 없어지는 변수
        // if / for / while 등 중괄호롤 감싸지는 영역
        // 자바 변수는 기본적으로 블록 단위

        int i = 0;
        while (i <10) {
            int a = 1;
            System.out.println(a);
            i++;
            a++;
        }
        System.out.println(i);

        // 블록 스코프 내에서 만든 변수는 
        // 블록을 빠져나오면 없어진다
        int a = 0;
        if (true) {
            int a = 1; // 작동안됨
        }
        System.out.println(a);

        // for에서 만든 변수는
        // 반복이 끝날 때까지 살아 있다
        // 반복이 종료되면 없어진다.
        for (int i = 0; i < 10; i++) {
        }
        System.out.println(i); //작동안됨

        // while을 쓸 때 같은 변수로 여러개의 while을 사용하려면
        // 새로운 while을 쓰기 전에 변수를 초기값으로 변경해야 한다.
        int i = 0;
        while (i < 10) {
            System.out.println("첫번째 while");
            i++;
        }
        i = 0; // 원래 쓰던 변수를 초기화해줘야 함.
        while (i < 10) {
            System.out.println("두번째 while");
            i++;
        }

        for (int i = 0; i < 10; i++) {
            System.out.println("첫번째 for");
        }        
        for (int i = 0; i < 10; i++) {
            System.out.println("두번째 for");
        }

        // 프로그래밍 작동되는 동안 계속 사용할 변수라면 글로벌

        // while에서는 횟수가 정해진 반복문을 사용할 때는
        // 외부에 먼저 변수를 만들고 변수를 변경하면서 사용
        
        // for에서는 소괄호 안에 변수를 만들고 변경하면서 사용

        // if, while, for 등의 블록에서 반복회차마다 새로 사용할 변수는 
        // 블록안에서 만든 후 사용
    } 

}

profile
미래가 기대되는 풀스택개발자 공부 이야기~~

0개의 댓글