2024-10-28




exam >>> classes.ClassExam_01@3d012ddd
멤버변수(num) >>> 0
멤버변수(str) >>> null
멤버변수(su) >>> 1
멤버변수(num) >>> 150
멤버변수(str) >>> 홍길동
멤버변수(su) >>> 1
exam2 >>> classes.ClassExam_01@1c6b6478
멤버변수(num) >>> 2000
멤버변수(str) >>> 세종대왕
멤버변수(su) >>> 1
멤버변수(num) >>> 150
멤버변수(str) >>> 홍길동
멤버변수(su) >>> 1
package classes;
/*
* 객체(Object)?
* - 실제 세계에서 우리 주변에 있는 모든 것이 객체임.
* 예) TV, 컴퓨터, 책, 건물, 의자, 사람 등등
* - 실제 세계의 객체들은 자신만의 고유한 특성(속성)과 행동(기능)을
* 가지고 있음.
* - 이러한 객체들은 다른 객체들에게 행동을 요청하거나 정보를 주고
* 받는 등 상호 작용을 하면서 존재함.
* 예를 든다면 사람은 전자계산기의 기능을 이용하게 되고,
* 전자계산기는 계산 결과를 사람에게 알려 주는 상호 작용을 하게 됨.
* - 이러한 객체는 속성과 기능(동작)으로 구성이 되어 있음.
* 예를 든다면 사람은 이름, 나이 등의 속성이 있고, 걷다, 쓰다,
* 달린다 등의 동작이 있음. 또한 자동차의 경우에는 색상, 모델명
* 등이 속성에 해당이 되고, 달린다, 멈춘다 등의 동작이 있음.
* - 객체는 개별적으로 사용이 될 수도 있지만, 대부분 다른 객체와
* 관계를 맺고 있게 됨. 이러한 관계의 종류에는 집합관계, 사용관계,
* 상속관계가 있음. ==> 중요함.
* - 집합관계는 객체는 하나의 부품이고, 하나의 완성품에 해당이 됨.
* 예를 든다면 자동차는 엔진, 타이어, 핸들 등으로 구성이 되므로
* 이 부품들을 집합관계라고 볼 수 있음.
* - 사용관계는 객체 간의 상호 작용을 말함. 다른 객체의 메서드를
* 호출하여 원하는 결과를 얻어내는 것을 말함. 예를 든다면 사람은
* 자동차를 사용하므로 사람과 자동차는 사용의 관계라고 볼 수 있음.
* 사람은 자동차를 사용할 때 달린다, 멈춘다 등의 메서드를 호출함.
* - 상속관계는 상위(부모) 객체를 기반으로 하위(자식) 객체를
* 생성하는 관계를 말함. 일반적으로 상위 객체는 종류를 의미하고,
* 하위 객체는 구체적인 사물에 해당이 됨.
* 예를 든다면 "독수리는 새의 종류이다" 에서 새(상위)와
* 독수리(하위)는 상속관계에 있다고 볼 수 있음.
* - 객체지향 프로그래밍(OOP : Object Oriented Programming)
* 은 만들고자 하는 완성품인 객체를 모델링하고, 집합관계에 있는
* 부품 객체와 사용관계에 있는 객체를 하나씩 설계한 후 조립하는
* 방식으로 프로그램을 개발하는 기법임.
*
* - 객체지향 4가지 특징
* 1. 추상화(Abstraction)
* 2. 다형성(Polymorphism)
* 3. 캡슐화(Encapsulation)
* 4. 상속(Inheritance)
*
* - 객체지향 패러다임
* - 적절한 객체에게 적절한 책임을 할당하여 서로 메세지를 주고 받으며
* 협력하도록 하는 것.
* - 점점 증가하는 SW 복잡도를 낮추기 위해 객체지향 패러다임 대두.
* - 개인적으로 생각하는 두 가지 포인트.
* 1. 클래스가 아닌 객체에 초점을 맞추는 것.
* 2. 객체들에게 얼마나 적절한 역할과 책임을 할당하는지.
*/
/*
* 클래스(class)?
* - 현실에서 객체는 갑자기 만들어지는 것이 아니라, 설계도를 바탕으로 만들어짐.
* 예를 들어 사람들이 자동차를 이용하기 위해서는 우선 공장에서 자동차 설계도를
* 보고 자동차를 만들어야함. 객체지향 프로그래밍도 마찬가지임. 메모리에서 사용하고
* 싶은 객체가 있다면 우선 설계도로 해당하는 객체를 만드는 작업이 필요함.
* 자바에서는 설계도가 바로 클래스(class)임.
* - 클래스는 객체를 만들기 위한 설계도(틀, 도면)임.
* - 붕어빵 틀과 붕어빵 객체사이의 관계를 통해 클래스와 객체 관계를 보여줌.
* 자바로 말하자면 붕어빵 틀은 자바 클래스이며, 붕어빵은 객체임.
* 클래스는 하나이지만 객체들은 수 없이 많이 생성할 수 있음.
* - 자바용 클래스 단위로 프로그래밍을 함.
* - 동일한 기능, 다른 데이터
* - 클래스를 구성하는 것을 멤버(member)라고 함.
* - 멤버 = 속성(멤버변수) + 기능(멤버메서드)
* ==> 속성 : 멤버변수 - 클래스의 특징 ==> 명사적 개념
* ==> 기능 : 멤버메서드 - 클래스의 행위(동작) ==> 동사적 개념
* - 클래스 구성 : 클래스 헤더, 멤버변수, 멤버메서드, 생성자
*
* [클래스 형식]
*
* [접근제한] class 클래스이름 {
* 멤버변수(); ==> field 라고도 함.
* 생성자();
* 멤버메서드();
* }
*
* - 클래스 이름 : 반드시 첫 글자는 대문자로 작성(식별자)
*/
public class ClassExam_01 {
/*
* 멤버변수는 초기값을 설정하지 않으면 JVM이 객체 생성
* 시점에 해당 데이터 타입(자료형)에 맞게 알아서 해당
* 자료형의 default(기본) 값을 설정을 해 줌.
*/
// 멤버변수 - 전역변수
int num;
String str;
void display() { // 멤버메서드
// 지역변수
int su = 1;
System.out.println("멤버변수(num) >>> " + num);
System.out.println("멤버변수(str) >>> " + str);
System.out.println("멤버변수(su) >>> " + su);
} // display() 메서드 end
public static void main(String[] args) {
// 클래스를 대상으로 객체를 만드는 과정.
// 1단계 : 클래스 선언.
// 형식) 클래스이름 참조변수(클래스별명);
//ClassExam_01 exam;
// 2단계 : 클래스를 메모리(heap)에 생성.
// 형식) 참조변수 = new 클래스이름();
// 1단계 + 2단계 : 클래스 선언 및 클래스 메모리 생성
ClassExam_01 exam = new ClassExam_01();
System.out.println("exam >>> " + exam);
// 3단계 : 참조변수를 이용하여 객체에 접근.
// 객체에 접근 시 "."(dot)을 이용하여 접근
exam.display();
System.out.println();
exam.num = 150;
exam.str = "홍길동";
exam.display();
System.out.println();
ClassExam_01 exam2 = new ClassExam_01();
System.out.println("exam2 >>> " + exam2);
exam2.num = 2000;
exam2.str = "세종대왕";
exam2.display(); // 클래스2
System.out.println();
exam.display(); // 클래스1
} // main() 메서드 end
}'Java > 기초 내용 정리' 카테고리의 다른 글
| Java(Class&Method)_Class_03 (0) | 2024.10.28 |
|---|---|
| Java(Class&Method)_Class_02 (0) | 2024.10.28 |
| Java(Class&Method)_Method_12 (0) | 2024.10.28 |
| Java(Class&Method)_Method_11 (0) | 2024.10.28 |
| Java(Class&Method)_Exam_01 (0) | 2024.10.25 |