본문 바로가기
Java

OOP(객체지향 프로그래밍)

by 개발자공부 2024. 4. 16.

Java ☞ 객체 지향 언어.

 

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

☞ 객체를 사용하는 프로그래밍 방식

☞ 실세계의 사물 또는 실제로 존재 가능한 것을 객체로 모델링하여 프로그램을 구성하는 방법


객체

각 객체는 속성(Properties)과 행동(Methods)을 가진다. 

 

속성 ☞ 객체 특성, 상태, 데이터를 나타낸다. ex) 자동차 색상, 브랜드, 모델, 연식 등

행동 ☞ 객체가 수행할 수 있는 작업, 기능을 나타낸다. ex) 자동차 주행하기(drive), 멈추기(stop) 등

 

객체는 독립적이며 자신의 속성과 메서드를 하나로 묶어 캡슐화한다. 객체 간에는 출력되는 메시지를 통해 상호작용한다.


객체 지향 패러다임

객체와 객체가 상호작용한다. 객체와 객체간에 관계를 형성하여 상호작용하게끔 만드는게 핵심이다.

 

객체 지향 패러다임의 주요 원칙

캡슐화(Encapsulation) : 객체는 자신의 데이터(변수)와 그 데이터를 조작하는 함수(메서드)를 하나의 단위로 묶어 관리한다. 이를 통해 데이터 구조와 데이터를 조작하는 방법을 결합하여 데이터의 추상화를 가능하게 하고, 외부에서의 직접적인 접근을 제한한다.

 

상속(Inheritance) : 하나의 클래스가 다른 클래스의 특성을 물려받을 수 있는 매커니즘이다. 코드의 재사용성을 높이고, 중복을 줄이며, 유지 보수를 쉽게 합니다.

 

다형성(Polymorphism) : 하나의 메서드나 클래스가 다양한 방식으로 동작하는 능력을 말한다. 오버라이딩(Overriding)과 오버로딩(Overloading)은 다형성을 구현하는 일반적인 방법이다.

 

추상화(Abstraction) : 복잡한 현실 개체를 단순화된 모델로 표현하는 것이다. 핵심적인 개념 또는 기능에만 집중하여 프로그램의 복잡성을 줄인다.


클래스와 객체

자바에서 class는 객체를 생성하기 위한 템플릿 또는 설계도 역할을 한다. 클래스는 객체의 상태를 나타내는 필드(변수)와 객체의 행동을 정의하는 메서드(함수)로 구성된다. 간단히 말해 클래스는 데이터와 그 데이터를 조작하는 코드를 묶어 놓은 컨테이너와 같다.


인스턴스 생성과 힙 메모리

클래스가 객체의 속성을 정의하고 기능을 구현하여 만들어 놓은 코드 상태(설계도면)이라면 실제 클래스 기반으로 생성된 객체를 인스턴스(instance)라고 부른다. 인스턴스는 각각 다른 멤버 변수 값을 가지게 된다. 가령 학생의 클래스에서 생성된 각각의 인스턴스는 각각 다른 이름, 학번, 학년등의 값을 가지게 된다. new 키워드와 생성자를 사용하여 인스턴스를 생성한다.

 

생성된 인스턴스는 동적 메모리(heap memory)에 할당된다. C나 C++언어에서는 사용한 동적 메모리를 프로그래머가 해제 시켜야 한다. 자바에서는 Gabage Collector가 주기적으로 사용하지 않는 메모리를 수거해준다. 하나의 클래스로부터 여러개의 인스턴스가 생성되고 각각 다른 메모리 주소를 가지게 된다. 인스턴스가 JVM에 하나씩 만들어질 때마다 스택이 쌓이는 것이다.


참조 변수

데이터 타입 중 기본 자료형은 값을 저장하는 변수로써 실제 데이터 값이 저장된다. 반면에 참조 변수는 객체를 참조할 때 사용되는 변수로서 여기에는 객체의 참조값이 저장된다. 참조값은 일반적으로 객체의 주소이다. 참조 변수에 객체가 직접 저장되는 것은 아니라는 점을 주의해야 한다. 객체를 참조하는 변수가 없다면 객체를 사용할 수 없다. int라는 상자 안에 100이라는 값이 담겨 있다면 참조 변수 상자 안에는 화살표가 들어있다고 생각하면 된다. 


 

'Java' 카테고리의 다른 글

this를 활용하는 3가지 방법  (0) 2024.04.18
접근 제어 지시자  (0) 2024.04.18
Operators(연산자)  (0) 2024.04.10
명령어로 컴파일, 실행  (0) 2024.04.10
Type casting(형 변환)  (0) 2024.04.10