JAVA를 JAVA라

[JAVA] 객체지향 본문

JAVA/JAVA 수업

[JAVA] 객체지향

샛별KIM 2021. 6. 1. 11:04

 * 절차지향은 하나의 로직을 순서대로 진행하여 처리합니다.
 * 객체지향은 객체의 호출 순서에 영향을 받습니다.
 * 
 * 객체를 만들어 순서에 연연하지 않고 자주 쓰거나 필요한 부품은 
 * 따로 정의하여 모듈화 하는 등의 장점을 가진 방법입니다. 
 * 
 * 객체 
 * 우리 주변에 있는 모든 것들은 객체이다. 객체를 만들기 위해선 클래스가 필요하다.
 * = 현실에 존재하는 사물들
 * 
 * 클래스
 * 붕어빵틀 이라고 생각하자. 클래스 안에 메소드가 들어간다.
 * = 객체를 컴퓨터에서 구현하기 위해 필요한 설계도 같은 개념
 *  인스턴스 = 메모리 상에 만들어진 객체 
 * 
 * 메소드
 * 행동 이라고 생각하면 편하다..
 * = 클래스 속에 존재. 어떤 기능을 수행하는 명령 문장들

package jun01;
//객체 지향
/*
 * 절차지향 프로그래밍						객체지향 프로그래밍
 * 1.2.3.4 ... 어제까지 이걸 했죠?			호출해서 실행..
 * 
 * 객체의 행동은 동사형으로 이름을 정한다. ~~하다. 뒤에 괄호가 있음
 * 				메소드, 행위, 함수, 일한다, 보고 듣는다. ...
 * 객체의 속성은 명사형으로 이름을 정한다... 수치화 할 수 있는 것들? 소문자로 시작,
 * 				멤버변수, 특성, 이름, 필드, 상태, 주소, 직업 등...
 * 
 * 하나의 클래스 파일로 똑같은 여러개가 나온다? 모양이 똑같다.
 * 붕어빵과 붕어빵틀! 모양은 다 똑같음!!(모양 = 속성)
 * 붕어빵틀은 클래스! 붕어빵은 인스턴스 들!
 * 객체는 클래스가 있어야 생성 가능하다!
 * ====> 클래스에서 만들어진 객체를 인스턴스라고 한다!
 * 
 * 
 * static! 객체 생성 없이 클래스 명으로 접근 
 */

public class OOP01 { 
	int number; //이게 인스턴스 변수@@ 초기화를 안해도 자동으로 해준다. 
	// 여기3 = CODE : 변수 선언문 = 인스턴스 변수 = 멤버변수 = 멤버 필드!
	//인스턴스 변수 = 	클래스 바디에 생성
	//					초기화 하지 않아도 자바가 알아서 해줍니다.!!(지역변수와 다른 점)
	//					클래스에서 사용하기 위해 이 곳에서 만듭니다.
	
	//지역변수 = 메소드 괄호 안에서 선언(){여 기}					
	//			괄호가 닫히면 사라집니다. (->데이터 스코프)
	//			사용하기 전에 초기화 해야합니다. (값이 미리 대입되어야 해요)
	
	public static void main(String[] args) { // 메인 메소드
		int app = 0;
		System.out.println(app);
		
		// 지금까진 여기에만 적었습니다.
		OOP01 oop01 = new OOP01(); //여기서 oop01이 인스턴스이다!
		//클래스이름 	인스턴스	new(객체생성)	클래스이름(생성자 메소드)
		oop01.print2(); //. = 소유의 개념. 즉, oop01안의 print2()를 호출
		//oop01이라는 변수가 갖고있는 메소드 실행시켜줘!
		System.out.println(oop01.number); //지역변수면 초기화를 안했기 때문에 에러 뜰 것이다!
		oop01.number = 1000;
		System.out.println(oop01.number);
		
		Apple apple = new Apple();
		apple.print();
		
		//다른 메소드를 실행시키기 위해서 호출하기
	}

	// 여기2 = 메소드를 만들고, 그 속에 코드를 적는다. (이미 class파일 내부니까!)
	void print2() { // 메소드, void는 return값이 없다.
		System.out.println("print2() 메소드. 실제 코드가 여기 들어갑니다.");
	}
	
	int print3() {
		return 0;
	}
	
	String print4() {
		return "Hello";
	}
	
	double print5() {
		return 3.14;
	}
}// end of class

//여기1 = class를 만들고, 메소드를 만들어 그 속에 코드를 적는다

class Apple { // 클래스는 항상 대문자로 시작합니다!
	public void print() { // 메소드
		System.out.println("Apple.print(); 실제 코드가 여기 들어갑니다."); // code
	}
}

//클래스 파일을 한 파일에 여러개 만들수도 있구나!

/*
 * [접근지정자(public)] static void(리턴타입) 메소드명([파라미터 혹은 매개변수]){}
 * []는 있어도 되고 없어도 된다~
 * 
 * void는 값을 리턴하면 에러!!
 * 
 * [접근지정자] : public, private, 생략, protected
 * 
 */

 

 *  캡슐화 = 보안 = 보호 가능
 *  관련된 데이터(필드)와 기능(메소드)가 하나의 묶음으로 관리
 * 
 *  상속
 *  이미 작성된 클래스(부모)를 이어받아서 새롭게 만드는 것
 *  자식 클래스는 부모 클래스의 모든 속성(필드)과 동작(메소드)를
 *  사용할 수 있습니다.
 *  필요한 기능은 자식 클래스에서 추가해서 사용합니다.
 * 
 *  추상화
 *  불필요한 것을 제외하고 필요한 것만 유지합니다.
 *  실제 객체를 인스턴스화 할 때 필요한 내용만 남기고
 *  나머지는 제외하는 것 입니다.
 * 
 *  다형성
 *  객체의 동작이 변경되는 것
 *  파라미터 상황에 따라 동작이 변경되는 것
 * 

'JAVA > JAVA 수업' 카테고리의 다른 글

[JAVA] 객체(Object)와 인스턴스(Instance)  (0) 2021.06.01
[JAVA] 21.06.01  (0) 2021.06.01
[JAVA] 21.05.31  (0) 2021.05.31
[JAVA] 21.05.28  (0) 2021.05.28
[JAVA] 21.05.27  (0) 2021.05.28
Comments