Java(Class&Method)_Class_01

2024. 10. 28. 17:47·Java/기초 내용 정리

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
'Java/기초 내용 정리' 카테고리의 다른 글
  • Java(Class&Method)_Class_03
  • Java(Class&Method)_Class_02
  • Java(Class&Method)_Method_12
  • Java(Class&Method)_Method_11
mw41817
mw41817
일생의 개발 기록 저장소
  • mw41817
    IT 개발 일지
    mw41817
    • Index (487)
      • HTML (36)
        • 기초 내용 정리 (36)
      • CSS (29)
        • 기초 내용 정리 (29)
      • JavaScript (60)
        • 기초 내용 정리 (60)
      • JQuery (38)
        • 기초 내용 정리 (38)
      • Java (232)
        • 기초 내용 정리 (232)
      • JSP (46)
        • 기초 내용 정리 (46)
      • Spring, Boot (31)
        • 기초 내용 정리 (31)
      • DB (5)
        • Oracle SQL (5)
      • Code WorkBook (6)
        • programmers (6)
        • Baekjoon (0)
      • 기타 (1)
        • 유용한 사이트 (3)
  • 전체
    오늘
    어제
  • 글쓰기 관리
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 카테고리
    • 주인장 GitHub
  • 공지사항

  • 인기 글

  • 태그

    html #코딩 #프로그래밍 #기초
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
mw41817
Java(Class&Method)_Class_01
상단으로

티스토리툴바