본문 바로가기
개발자/백엔드 웹 개발자 과정(국비)

2022년 11월 18일 _ 13회차(OOP)

by 초응 2022. 11. 18.

▶내용 복습

자바의 특징

1. 배우기 쉽다.

2. 플랫폼이 독립적이다.

3. 객체지향 언어이다.

 

기술이 아닌 개발 방법 논의. 
클래스는 재활용을 목적으로 나온 개념이다.

 

OOP란? 

-Object Oriented Programming

-객체지향 프로그래밍이라는 의미로 Object의 개념을 Program에 적용한 것.

 

 

 

객체지향은 c++부터 출발하였다.

C++ oop 3대 특징

1. 은닉화

2. 다형성

3.상속성 

 

▶OOP의 4대 특징
1. 추상화 = 객체 모델링 (클래스 설계도) <- (자바에 추가한 개념. C++ 에는 없다. )
2. 캡슐화(은닉화) (데이터를 보호하기 위해 나온 개념)
3. 다형성 (다양한 형태의 성질 / 오버 로딩 오버 라이딩 캐스팅)
4. 상속성 

 

 

추상화(Abstraction)란?

-어떠한 물체(Object)를 대상으로 주가 되는 특징을 강조하여 표현하고.

그 외 나머지 부분은 과감하게 생략하는 것.

 

추상화 = 객체 모델링

-클래스를 설계하는 기법이다.(물건의 기능과 속성을 추출해내는 작업)

-주가 되는 특징만을 표현한다.

-모든 물건은 할 수 있는 행위(기능)와 표현할 수 있는 값(속성)으로 표현된다.

-모든 물건 ---표현 값(속성) ---> 멤버 변수(전역 변수)// 자바에서는 전역 변수라는 단어 X, 이해하기 쉽게 오늘만..                      ㄴ 할 수 있는 행위(기능)---> 멤버 메서드

 

 

package day13;

public class Maka {
	
	//변수선언영역 (클래스 하단에 선언해야함)
	String color; // 멤버 변수(전역)
	
	//생성자선언영역 - 멤버 변수의 초기화를 목적으로 두고 있음. 기능선언영역 위에 선언해야함.
	public Maka() { //생성자명은 클래스명과 동일하게
		color = "검정";
	}

	//기능선언영역(변수 선언 하단에 선언해야함.)
	public void writeMaka() { //멤버 메서드
	/*static은 정적메모리할당키워드로 프로그램 시작전 준비하는 것 / 생략 가능하다.
	 * 동적메모리는 준비가 되어있지 않아도 시작할 수 있는 것. */
		
		System.out.println(color+"색상의 마커로 글을 씁니다~");
		
	}

멤버 변수는 클래스 하단에 선언.
생성자는 멤버 메서드 위에 선언.
멤버 메서드는 변수 선언 하단에 선언

package day13;

public class MakaTest {

	public static void main(String[] args) {

		
		System.out.println("프로그램의 시작");
		
		
		Maka m1 = new Maka ();
		//m1은 객체, 물건이라고 생각.
		
		m1.color = "파랑";
		m1.writeMaka();
		
		
		Maka m2 = new Maka();
		//같은 설계도로 찍어냈을뿐 다른 물건
		m2.color ="노랑";
		m2.writeMaka();
		
		
		Maka m3 = new Maka();
		m3.color = "빨강";
		m3.writeMaka();
		
		Maka m4 = new Maka(); /*클래스가 아닌 생성자의 호출 //
		아무것도 만들지 않는다면 JVM이 비어있는 생성자를 자동으로 만들어줌
		*/
		m4.writeMaka();
        
		System.out.println("프로그램의 끝");
	}
}
생성자란?

클래스를 객체로 만들때 해당 객체의 멤버변수들을 초기화 해주는 역할의 메소드

//생성자 형식
//접근 지정자 생성자명(){
	//초기화 과정;
}

	public Maka() { //생성자명은 클래스명과 동일하게
    
	}

알아 두기!

1. 생성자는 반환타입이 없다.

ㄴ 기능에 대한 목적이 없다.멤버 변수를 초기화하는게 목적이다.(메모리 공간을 할당 받는다)

2. 생성자명은 반드시 클래스 이름과 동일해야한다.(대소문자까지도)

3. 접근지정자는 거의 95% public 을 사용한다.

4. 소멸자는 C와 C++에는 존재하지만 자바에서는 가비지컬렉터가 있어 소멸자가 존재하지 않는다.

5. static은 정적메모리할당키워드로 프로그램 시작전에 준비하는것이다.

동적메모리는 준비가 되어 있지 않아도 시작 할 수 있는것이며 이 자리는 생략 가능하다.