1. 객체(Object)의 구성요소

①속성(data, variable)
②기능(operation, method)
자동차를 예로 들면, 제조사, 가격, 색상, 배기량은 '속성'
전진하기, 멈추기, 후진하기, 음악켜기는 '기능'에 해당한다.

+) 객체는 기준에 따라 상대적이다.
나를 기준으로 하면 내가 아니라 자동차가 객체이고, 자동차를 기준으로는 지나가는 사람 및 고라니가 객체이다.

2. 객체지향

객체지향은 크게 여섯 특징으로 소개할 수 있다.
①추상화(Abstraction, 뽑을 추/모양 상): 분석설계.
예를 들어 요구사항이 시험 점수 3개를 입력받아서 한꺼번에 출력하는 것일 때, 시험 점수의 타입은 무엇으로 할 것인지, 어떻게 입력 받을 것인지, 소수점 이하는 어떻게 처리할 것인지, 출력은 어떤 형식으로 할 것인지 등 자세히 표현하면 데이터 타입이나 변수명 등을
+)여러 가지 사물이나 개념에서 공통되는 특성이나 속성 따위를 추출하여 파악하는 작용.(출처: 네이버 사전)

②클래스(Class): 속성과 기능(합쳐서 Member)들의 집합으로, 동일한 개체를 여러번 생성할 때 쓰기 위한 청사진이다. 유명한 비유로는 붕어빵(객체)을 찍어내기 위한 '붕어빵 틀'이라고도 한다.

③캡슐화(Encapsulation): 말 그대로 보호하는 것. 특히 유효한 데이터가 입력될 수 있도록 하는 게 주된 목표이다.
예시)

name1과 name2의 차이는 접근제어지시자에 따라 1은 모든 패키지에서 접근이 가능하고, 2는 해당 클래스 내에서만 접근이 가능하다. 이름 변수의 유효한 데이터의 기준을 2자 이상으로 잡은 상황에서, public으로 선언할 경우, 누구나 마음대로 이 변수를 호출하여 유효하지 않은 데이터를 넣을 수 있다. 그래서 이를 방지하기 위해 private으로 선언하여 변수 값을 해당 클래스 내에서만 접근 가능하도록 하고, 변수에 값을 대입할 때, 2자 이상인 값만 정상적으로 대입되도록 조건을 걸어주면 된다.

④상속(Inheritance): 'Extends'라는 예약어를 사용. 상속해주는 쪽이 부모(super) 클래스, 상속 받는 쪽이 자식(sub) 클래스이다. 자식 클래스는 부모 클래스에 있는 member를 굳이 선언하지 않아도 자기 것처럼 사용할 수 있다.
상속 관계를 정하기 위해서는 공통 멤버가 있는지 우선 파악하면 쉽다.
특정 멤버의 상속을 막으려면 private으로 접근 제한 지시자를 붙여주면 된다.

⑤재정의(Overriding): 부모 클래스에 이미 존재하는 메서드의 구현부를 일부 혹은 전부 수정하는 것.

⑥다형성(Polymorphism): 다형성은 크게 4단계가 성립해야한다.
ㄱ.상속
ㄴ.재정의
ㄷ.부모 클래스 타입으로 객체 생성
ㄹ.재정의한 메서드 사용
상속을 받아서, 부모 클래스에 있는 메서드를 Overriding(재정의)하고, 부모 클래스 타입으로 객체를 생성한다. 부모 클래스 타입으로 객체를 생성하면 자식 클래스 타입 객체도 자유롭게 생성 및 사용할 수 있고, 재정의한 메서드를 사용해야만 비로소 다형성이 성립된다.

profile
가보자고~!

0개의 댓글