객체지향프로그래밍(OOP, Object-Oriented Programming)
프로그램을 객체 단위로 구성하는 방법이다.
모든 데이터를 객체(object)로 취급하며, 이러한 객체가 바로 프로그래밍의 중심
객체(object)란 소프트웨어 세계에 구현할 대상
다양한 기능을 하는 객체들을 조합해서 자기가 원하는 기능을 구현하는 방법이다.
객체(object) : 필드와 메소드로 구성이 된다. 객체안의 멤버변수들을 필드라고 하며 필드에 객체의 상태를 저장한다.
객체안의 멤버함수들을 메소드라고 하며, 특정한 작업을 수행한다.
*참고 : https://wikidocs.net/156068 객체지향프로그래밍
클래스(class)
객체를 정의하는 틀 또는 설계도와 같은 의미
이러한 설계도인 클래스를 가지고, 여러 객체를 생성하여 사용하게 된다.
클래스는 객체의 상태를 나타내는 필드(field)와 객체의 행동을 나타내는 메소드(method)로 구성된다.
즉, 필드(field)란 클래스에 포함된 변수(variable)를 의미한다.
또한, 메소드(method)란 어떠한 특정 작업을 수행하기 위한 명령문의 집합이라 할 수 있다.
<클래스 구성요소>
1.멤버 필드 (객체의 상태를 나타낸다==변수) ex) String name;
2.메소드(객체의 행동을 나타낸다==함수) ex) getter, setter (멤버필드를 서비스하려는 것 여기다 저장하려고)
3.생성자 new (포인터) - 자바는 jvm의 도움으로 기본생성자 만들어준다.
즉 클래스에 의해서 만들어지는 객체를 인스턴스라고 한다.
객체지향 프로그래밍에서는 클래스가 하나의 기본단위가 된다.
Class 클래스이름 {
자료형 필드1; //값을 저장 멤버 변수
반환형 메소드1(매개변수){ //멤버 함수
};
}
//자바 언어에서는 하나의 소스파일에 하나의 클래스만을 선언하도록 한다.
인스턴스(instance)
자바에서 클래스를 사용하기 위해서는 우선 해당 클래스 타입의 객체(object)를 선언해야 한다.
이렇게 클래스로부터 객체를 선언하는 과정을 클래스의 인스턴스화라고 한다.
이렇게 선언된 해당 클래스 타입의 객체를 인스턴스(instance)라고 한다.
즉, 인스턴스란 메모리에 할당된 객체를 의미한다.
자바에서는 하나의 클래스로부터 여러 개의 인스턴스를 생성할 수 있다.
이렇게 생성된 인스턴스는 독립된 메모리 공간에 저장된 자신만의 필드를 가질 수 있다.
하지만 해당 클래스의 모든 메소드(method)는 해당 클래스에서 생성된 모든 인스턴스가 공유하게 된다.
참고 코드
/* 클래스 */
class Animal {
String name; //객체 변수
public void setName(String name) {
this.name = name; //2.cat.name = "boby";
}
}
/* 객체와 인스턴스 */
public class Sample {
public static void main(String[] args) {
// '객체'
Animal cat, dog;
// 인스턴스화
cat = new Animal(); // cat은 Animal 클래스의 '인스턴스'(객체를 메모리에 할당)
//Animal cat = new Animal(); 보통 이렇게 선언
cat.setName("boby"); // 1.메서드 호출
/*
1.cat과 dog의 name 객체 변수는 공유되지 않는다 -> 독립적으로 유지
2.이것이 바로 클래스의 존재 이유
3.객체 지향적(object oriented)이라는 말은
곧 이 객체 변수의 값이 독립적으로 유지되기 때문에 가능
*/
Animal dog = new Animal();
dog.setName("happy");
}
}
참고 : https://gmlwjd9405.github.io/2018/09/17/class-object-instance.html , http://www.tcpschool.com/java/java_class_intro
'WEB JAVA SPRING > 문법' 카테고리의 다른 글
상속/생성자/인터페이스 (0) | 2023.08.25 |
---|---|
Collection, Vector (0) | 2023.08.24 |
List, Map, Set (0) | 2023.08.24 |
제네릭스 (1) | 2023.08.24 |
접근제어자 (0) | 2023.08.24 |