객체 지향(OOP) 한 눈에 알아보기 with 자바(Java)

DongJoo Kwak·2022년 2월 23일
0
post-thumbnail

🎈최근 스프링을 공부하며 자바공부를 복기중인데 자바의 특징들을 다시 공부하며 정리해보려 한다!

📌객체 지향 Object Oriented Programming (OOP)

객체 : 우리 주변의 모든 것. 고유한 특성과 기능을 가지고 있다. 
객체 지향 : 실세계의 객체를 프로그램내에 표현하기 위해 클래스와 
	객체 개념을 도입한것. 

  💡특징 
	코드의 재사용성이 높다 : API사용 
	코드 관리가 쉽다 : 상속, 다형성, 추상화, 캡슐화... 
	신뢰성이 높은 프로그램 개발 가능 

	캡슐화 encapsulation : 자바가 지향하는 코드 스타일 
	상속 inheritance     : 부모가 자손에게 가진것들을 물려주는것. 
	다형성 polymorphism
	    : 상속관계에서 성립 
		같은 이름의 메서드가 클래스나 객체에 따라 
		기능이 다르게 동작하도록 구현되는 것을 말함. 

절차지향 : 순서대로 진행되는 코드 방식 
객체지향 : 부품처럼 서로 상호작용하며 진행되는 방식 

📌 클래스와 객체

1) 클래스 (설계도)
	객체를 정의해놓은것 
	용도는 객체를 만들기 위한것 
	붕어빵틀 
2) 객체 
	실제로 존재 하는것, 사물, 개체 
	클래스 모양 그대로 생성된 실체 
	붕어빵 (틀로만든..) 

3) 객체와 인스턴스 
	객체 == 인스턴스 
	
4) 객체 (속성 + 기능)
	속성과 기능을 멤버라 부른다. 
	속성 : 멤버변수, 필드 
	기능 : 메서드 

5) 인스턴스(객체) 생성과 사용 
	순서 : 클래스(설계도 만들기) -> 객체 생성 -> 사용 

	💡클래스 구조 
	class 클래스명 {
		변수(속성, 필드)
		메서드 
	}

	* 클래스명은 대문자로 시작, 숫자로시작X, 띄어쓰기X, 
			특수문자 _ $, 패키지안에 이름은 한개만 존재하게.

6) 인스턴스(객체) 생성 
	
	*선언 
	클래스명 참조변수명; 			
    Scanner sc


	*생성 		
	참조변수 = new 클래스명(); 
	sc = new Scanner(System.in); 

	*# 줄여서 
	클래스명 참조변수명 = new 클래스명(); 
	Scanner sc = new Scanner(System.in); 

	* 참조 변수(레퍼런스 변수) : 객체를 가르키는, 
		객체의주소(레퍼런스)를 담고 있을 변수 
		-> 객체 생성전, 참조변수 먼저 선언만 하면 
		메모리에 아직 객체가 생성되어 올라간것이 아니다. 
		그냥 주소 담을 수 있는 변수만 만들어놓은것. 

	* new : 새로운 클래스 모양의 메모리를 새로 점유시키는 중요한 키워드 
		
7) 객체 멤버(변수or메서드) 에 접근 : 점(.) 연산자 사용 
	sc.nextLine(); 
	
** 💡 정리하자면 
	클래스 == 사용자 정의 데이터 타입 
	기본형 : 메모리 양이 정해진것 
	참조형(클래스) : 개발자가 필요한 만큼 메모리를 직접 지정해서 만든것. 

	클래스 : 유사한 특징을 지닌 객체들의 "속성"과 기능을 묶어놓은 집합
	객체 : 실제 존재하는 object 를 말함.  
    

📌 코드 예시 (Java)

// #1. 클래스 만들기
class Person {
	// 속성 = 변수
	String name ;
	int age = 0 ;

	// 기능 = 메서드
	void  work() {
		System.out.println("나는 항상 열심히 일을 해!");
	}
	
	void eat() {
		System.out.println("나는 초밥이 먹고 싶어!");
	}
}
 
public class Test51 { //클래스

	public static void main(String[] args) {
		//메서드 메인메서드 : 프로그램 시작시 가장 먼저 실행되는 메서드
		//변수 작성가능
		
		//#2 객체 생성
		Person  p = new Person();
		
		// #3 사용
		p.name = "제이스";
		p.age = 100;
		
		System.out.println("내 이름은 "+ p.name+"라고 해!");
		p.eat();
		p.work();
	}

}

출력결과

      내 이름은 제이스라고 해! //System.out.println("내 이름은 "+ p.name+"라고 해!");
      나는 항상 열심히 일을 해! //p.eat();
      나는 초밥이 먹고 싶어!   //p.work();
 ### 📈금융 개발 블로그 : https://quantpro.co.kr/
profile
즐거운 개발 공간

0개의 댓글