dev._.note

[JAVA] 객체지향(Object oriented) 본문

Dev/JAVA

[JAVA] 객체지향(Object oriented)

Laena 2023. 2. 21. 21:00

객체지향 언어란?

현실 세계는 사물이나 개념처럼 독립되고 구분되는 각각의 객체로 이루어져 있으며, 발생하는 모든 사건들은 객체간의 상호 작용이다. 이 개념을 컴퓨터로 옮겨 만들어낸 것이 객체지향 언어이다.

객체지향 프로그래밍

프로그래밍에서는 현실세계의 객체(사물, 개념)를 클래스(class)와 객체(Object)의 개념으로 컴퓨터에서 구현한다.

 


객체란?

객체의 사전적의미 : 실재하는 모든 사물. 살아있지 아니할 것. 객체 지향 언어에서 객체의 개념은 new 연산자를 통해 클래스의 설계대로 데이터를 메모리에 할당한 결과물(instance)이다.


클래스와 추상화

클래스(class)란?

객체를 정의해 놓은 것. 객체의 설계도, 틀. 사물이나 개념의 공통 요소(속성, 기능)를 용도에 맞게 추상화(abstraction) 함.

예시 ) 제품의 설계도

추상화(abstraction)란?

사전적의미 : 구체적 사물들의 공통된 특징. 프로그램에서 필요한 기능/속성을 추출하고, 불필요한 것을 제거하는 과정

추상화(abstraction)

기업에서 회원정보관리 프로그램을 만들려고 할 때, 프로그램에서 요구되는 “회원 객체”를 만들기 위해 추상화 해본다.

클래스 작성

추상화(abstraction) → 클래스 작성

추상화한 결과물을 객체 지향 프로그래밍 언어를 사용해서 변수명(데이터이름)과 자료형(데이터타입)을 작성.

 

클래스의 표현

UML 다이어그램 표현
앞 페이지에서 정리된 변수명과 자료형을 클래스 다이어그램(UML)으로 표현한다면 아래와 같다.

클래스 선언

[접근제한자] [예약어] class 클래스명 {
    [접근제한자] 자료형 변수명;       ← 속 ⌉
    [접근제한자] 자료형 변수명;       ← 성 ⌋
    [접근제한자] 생성자명(){}
    [접근제한자][예약어]리턴형 메소드명(){      ← 기능 
	//기능정의
    }
}

❏ 예제

public class Person{
	private String name; 
	private int age;

	public Person(){}

	public String getName(){ 
		return name; 
	}
	public void introduce(){            
		System.out.println(”반갑습니다.“ + age + ”살, “ + name + ”입니다.”); 
}

클래스 접근 제한자

접근제한자

private : 선언된 클래스 내에서만 사용 가능.
default : 선언된 클래스가 포함된 패키지 안에서만 사용 가능
protected : 선언된 클래스가 포함된 패키지 안! 혹은 클래스를 상속받는 클래스들에서까지도 사용 가능.
public : 그 어느 곳에서도 사용 가능

 

예시)  
public class 클래스명  {
	……………… 
}
class 클래스명{ // 생략하면  default클래스
	………………
}

객체지향 언어

객체(Instance)의 할당

new 연산자(생성자)를 사용하여 객체를 생성하면 heap 메모리 공간에 서로 다른 자료형의 데이터가 연속으로 나열 할당된 객체 공간이 만들어진다. 이것을 인스턴스(instance)라고 한다.
예시 ) Person p = new Person();


클래스의 등장 배경


클래스의 등장 : 필드 / 메소드

여러 데이터타입을 가진 구조체의 보안문제로 인해 직접접근을 금지

 

'Dev > JAVA' 카테고리의 다른 글

[JAVA] Jsp 개요  (0) 2023.03.02
[JAVA] 객체지향의 3대 요소 & 5대 원칙  (0) 2023.02.22
[JAVA] 중첩 반복문  (0) 2023.02.20
[JAVA] 배열(Array)  (0) 2023.02.19
[JAVA] 제어문  (0) 2023.02.18