객체지향 프로그래밍 1

mo_on·2020년 8월 27일
0

package e_OOP;

public class OOPBasic {
public static void main(String[] args) {

    /*
	1. OOP : Object Oriented Programming ->객체지향 프로그래밍
	 - 기존의 프로그래밍언어에 몇가지 규칙을 추가한 보다 발전된 언어이다.
	 
	2. 객체지향 프로그래밍의 장점
	 - 코드의 재 사용성이 높다.
	 - 코드의 관리가 용이하다.
	 - 신뢰성이 높은 프로그래밍이 가능하다.
	 
	3. 클래스
	 - 객체를 정의해 놓은 것
	 - 설계도
	
	클래스		객체
	Tv설계도 		Tv
	붕어빵 틀		붕어빵
	
	4. 객체의 구성요소
	 - 속성
	 	: 멤버변수 //명사적 의미
	 	: 전원, 볼륨, 색상, 채널...	
	 - 기능
	 	: 메서드, 행위, function..//동사적 의미
	 	: 켜기, 끄기, 볼륨올리기, 채널바꾸기..
	 
	 5. 인스턴스란?
	  - 클래스로부터 객체를 만드는 과정을 인스턴스 화라고 한다.
	  - TV class로 부터 만들어진 객체를 Tv 클래스의 인스턴스라고 한다.
	  
	  - 인스턴스를 생성하는 방법
	  	: 클래스명 변수명; -> 참조 변수를 선언
	  	: 변수명 = new 클래스명(); -> 해당 클래스의 인스턴스를 생성 후 인스턴스의 주소를 변수에 저장
	    Tv t = new Tv();
	    
	 6. 선언위치에 따른 변수의 종류
	   - 지역변수
	   	: 메서드 내에 선언된다.
	   	: 메서드가 종료시 같이 소멸된다.
	   - 클래스변수(static이 붙음)(동일한 저장공간)
	    : 클래스의 영역에 선언된다.
	    : 클래스가 Method Area에 로드 될  때 같이 로드한다.
	    : 한 클래스의 모든 인스턴스들이 동일한 값을 가져야 할 때 사용한다.
	    : 인스턴스 변수 앞에 static만 붙이면 된다.
	   - 인스턴스 변수(static이 안붙음)(독립적인 저장공간)
	    : 클래스 영역에 선언된다.
	    : 클래스의 인스턴스가 생성될 때 heap 영역에 생성된다.
	    : 인스턴스마다 독립적인 저장공간을 가진다.(각각 다른 값을 가진다.)
	    : 인스턴마다 고유한 값을 가져야 되는 경우 해당 변수는 인스턴스 변수로 선언해야 한다.
	    
	 7. 메서드
	   - 어떠한 작업을 수행하기 위한 명령문의 집합
	   - 주로 어떤 값을 입력받아서 수행 후 그 결과를 돌려준다. //입력, 출력
	   - 입력받는 길이의 값이 없을 수도 결과를 반환하지 않을 수도 있다.
	   - 반복적으로 수행되는 코드를 줄이기 위해서 사용한다.
	   - 작성 방법
	   	반환타입 메서드 명(변수타입,변수명,...){ //매개변수
	   		//수행될 문장
	   		 return 반환값;
	   	}
	   	int add(int a, int b){
	   		int result = a + b; 
	   }
	   	return result;
	8. return문
	  - 메서드가 정상적으로 종료되는 경우
	  	: 메서드의 마지막 문장까지 실행된 경우
	  	: return문을 만났을 때 
	  - 반환 값이 있는 경우
	  	: return 반환값 => 반환 값과 반환 타입은 일치해야 한다.; 
	  - 반환 값이 없는 경우
	  	: return; => 반환 타입 void가 되어야 한다.
	  	: add(){ => 생략 가능하다.
	  	}
	 
	9. 메서드 호출
	  - 클래스명.메서드명();
	  - int 변수명 = 클래스명.add(3,5);
	  
	10. JVM 메모리 구조
	  - Method Area
	  	: 클래스가 로드 되며 클래스 변수, 클래스 메서드가 같이 생성된다.
	  - Call stack
	  	: 메서드가 호출 되었을 때 실행되는 영역
	  - Heap Area
	  	: 인스턴스가 생성되며 인스턴스 변수, 인스턴스 메서드가 같이 생성된다.
	
	11. 기본형 매개변수와 참조형 매개변수
	  - 메서드 호출되었을 때 매개변수로 지정한 (인자값)을 메서드의 매개변수에 복사하여 넘겨준다.
	  - 기본형 매개변수
	  	 : 단순히 값만을 복사해 준다.
	  	 : 변수의 값을 읽기만 할 수 있다.
	  - 참조형 매개변수 
		 : 주소를 복사해 준다.
		 : 변수의 값을 읽기 또는 변경이 가능하다.
	
	12. 재귀 호출(Recursive Call)
	  - 메서드 내에서 자기자신 메서드를 다시 호출하는 것
	
	13. 메서드의 종류
	 - 클래스 메서드
	 	: 객체 생성 없이 '클래스명.메서드명()'
	 	: 인스턴스 멤버와 관련없는 작업을 수행
	 	: 클래스메서드 내에서는 인스턴스 멤버를 사용할 수 없다.
	 	: 메서드 내에서 인스턴스멤버를 사용하지 않고 있다면 
	 	    클래스메서드로 만드는 것을 고려해야 한다.
	 - 인스턴스 메서드
	 	: 클래스멤버와 관련된 작업을 수행할 수도 있다.
	 	: 인스턴스메서드 내에서는 모든 멤버를 호출할 수 있다.
	 
	 14. 메서드 오버로딩
	  - 클래스 내에서 이름이 같은 메서드를 여러개 정의할 수 있는 것
	  - println()이 가장 대표적인 예이다.
	  - 조건
	   : 메서드의 명이 같아야 한다.
	   : 매개변수의 갯수 또는 타입이 달라야 한다.
	   : 반환타입은 상관이 없다.
	  - 장점
	   : 메서드의 이름으로만 구분이 된다면 메서드명이 다 달라야 한다.
	   : 같은 역할을 하는 것인데 메서드의 명이 다르면 기억하기가 어렵다.
	   : 메서드의 이름을 짓는데 고민을 덜 수 있다.
	   a(), a(int), a(long)
	   
	 15. 생성자  
	  - 인스턴스가 생성될 때 호출되는 인스턴스 초기화 메서드이다.
	  - 인스턴스변수를 초기화할 목적으로 사용된다.
	  - 특징
	   : 메서드처럼 클래스내에 선언된다.
	   : 리턴값이 없다.
	   : 반환타입이 void이어야 하지만 생략한다.
	   : 생성자의 이름은 클래스명과 동일해야 한다.
	   
	   - 정의방법
	    : 기본생성자
	    		클래스명(){
	    		
	    		}
	    : 매개변수가 있는 생성자
	   			클래스명(변수타입 변수명,...){
	    		
	    		}
	    		
	 16. 변수의 초기화
	   - 변수를 선언하고 처음으로 값을 저장하는 것
	   - 명시적 초기화
	    : int a = 10;
	   - 생성자를 이용한 초기화
	   - 초기화블럭을 이용한 초기화
	   	: 변수의 복잡한 초기화의 경우 사용
	   	:클래스초기화블럭, 인스턴스초기화블럭
	   	
	   	
	   	
	 */
	
	
}

}

profile
개발 새발

0개의 댓글