자바 웹개발 국비과정/Java Programming

객체지향프로그래밍(OOP) (22.11.07)

FeelsKim 2022. 11. 23. 23:36

객체지향프로그래밍 (Object Oriented Programming)

 

*절차지향언어 ⇒ 주로 시스템 개발용 (C)

  1. 함수
  2. 알고리즘
  3. 자료구조 이해

*객체지향언어 ⇒ 응용프로그램/웹 개발용 (Java, C++)

  1. 클래스(Class) ⇒ 설계도 ⇒ 속성(Field)+기능(Method)
  2. 인스턴스(Instance) ⇒ 클래스로부터 생성되어 메모리에 할당된 각각의 객체(Object)
  3. 객체의 여러성질 : 다형성, 상속, 캡슐화,인터페이스, 추상화 등

 

클래스(Class) ⇒ 사용자 정의 타입

*객체참조변수 : 만들어진 객체(클래스)를 참조하는 변수

*new (객체생성 연산자) : 새로운 객체의 메모리 주소값 생성 => 인스턴스화(객체화)

int[] arr1 = new int[5];
String str1 = new String();

 

*자바 클래스 멤버(구성요소) : 필드, 생성자, 메소드

접근지정자 class 클래스명 {
	필드(Field);            // 속성(property)을 나타냄.

	(생성자;) 		// 생략시 기본 생성자

	메소드(Method);         // 기능을 나타냄
}

*클래스 명명규칙 ⇒ 변수의 명명규칙과 유사

  1. 대문자로 시작
  2. 가급적 영어 사용
  3. _, $ 이외의 특수문자 사용 불가
  4. 공백 불가
  5. 단어조합시 대문자로 구분

 

*자바의 메모리 영역

  1. 메소드(Method) 영역
    클래스의 생성과 소멸에 따라 함께 생성되고 소멸되는 영역
    클래스, 전역변수, Static변수 정보가 저장되는 공간 ⇒ 공유공간
    new 없이도 접근 가능
    JVM이 실행되면서 생기는 공간
  2. 힙(Heap) 영역
    new로 생성된 객체(인스턴스)의 데이터가 저장되는 영역
    Garbage Collection(어디서도 참조되지 않는 객체를 자동으로 삭제)을 통해 자동으로 메모리 관리가 이뤄짐
    참조타입(Reference Type)의 데이터가 저장되는 공간
    동적으로 생성된 데이터가 저장되는 공간
  3. 스택(Stack) 영역
    가장 나중에 들어온 데이터가 먼저 빠져나가는 후입선출(Last in First out)의 순서를 가짐
    지역변수, 메소드의 매개변수와 임시 데이터가 저장되는 공간
  4. PC Register
    스레드(Thread)가 생성되면서 생기는 공간
  5. Native Method Stack
    Java가 아닌 다른 언어(C,C++)로 생성된 메소드를 실행할 때 필요한 공간

 

접근지정자(접근제한자) (Modify)

public : 모든 패키지(모든 영역)에서 접근 허용

private : 해당 클래스 내에서만 접근 허용 ⇒ 캡슐화(보안 및 유지보수), DB관련(DTO, Entity)

protected : 상속관계, 같은 패키지 내에서만 접근 허용

dafault : 같은 패키지 내에서만 접근 허용

 

* 접근범위 : public > protected > default > private 

 

Setter & Getter : 외부클래스에서 private 필드에 접근할 때 사용 (Alt + Shift + S)
*Spring에서 ⇒ lombok.jar (setter&getter 자동화)

setter : 외부 객체에서 매개변수로 private 필드값을 초기화 해주는 메소드 (설정)

private String userId; 

public void setUserId(String Id) {
	this.userId=Id;                 // this : 해당 객체 자기자신으로 접근 
}

getter : 외부 객체에서 private 필드를 호출 해주는 메소드 (호출)

private String userId;

public String getUserId() { 
	return this.userId; 
}

 

오버로딩(OverLoading) : 같은 메소드명을 중복하여 사용하는 것

ex) System.out.println();

  • 메소드의 선언부에서 메소드명이 같음
  • 단, 메소드의 매개변수 형식(타입, 순서 등)이 달라야 함 (변수명이 달라도 형식이 동일하면 불가능)
  • 반환타입(void, int, String 등)과는 상관 X
public void method1() {}
public void method1(int num1) {}
public void method1(int num1, String name) {}
public void method1(String name, int num1) {}

 

멤버

  1. 필드(속성)

    1) 인스턴스 멤버(non-static) 
    객체(인스턴스)가 생성되면 생성되고, 객체가 소멸되면 종료.
    클래스 내부에 존재하는 변수

    new를 통해 생성된 객체로 인스턴스 멤버에 접근하는 방식


    2) 클래스 멤버(static)

    객체 생성없이, 클래스가 생성되면 생성되고 클래스가 소멸되면 종료

    static ⇒ 프로그램이 종료되도 메모리에 남아있음. 고정된 값(수정  X)
    ★ static메소드는 static인 멤버만 접근 가능 (non-static메소드는 static/non-static 구분없이 접근 가능)
    해당 클래스를 통해 클래스 멤버에 접근

    *final 상수 : 값이 고정되어 수정이 불가능한 클래스멤버
     선언과 동시에 상수값을 초기화하게 되며, 상수명은 대문자로 표기
  2. 메소드(기능)
    프로그램의 기능(동작)을 구현하는 멤버.

    해당 메소드의 정보를 나타내는 선언부와, 구체적인 동작을 명령하는 구현부로 이뤄짐 
public void instanceMethod(String name) {       	  // 선언부
	System.out.println(name+"인스턴스메소드");     	// 구현부
}

 

  *지역변수(로컬변수) : 메소드 안에서 선언된 변수 > 매개변수

  1. 메소드가 생성되면 반드시 초기화 필요
  2. 메소드의 생성과 종료 시점이 같음
  3. 스택메모리에 저장

 

 

 

'자바 웹개발 국비과정 > Java Programming' 카테고리의 다른 글

다차원배열 (22.11.04)  (0) 2022.11.14
배열 (22.11.03)  (0) 2022.11.14
반복문 (22.11.01)  (0) 2022.11.14
연산자, 제어문 (22.10.31)  (0) 2022.11.14
객체, 스캐너 (22.10.28)  (0) 2022.11.14