OOP Basic(Object Oriented Programming)

객체(Object)
-의사나 행위가 미치는 대상(사전적 의미)
-구체적, 추상적 데이터의 단위(학생,회원,생산 등등)

객체 지향 프로그램 vs 절차 지향 프로그램

<절차 지향 프로그래밍>

-시간이나 사건의 흐름에 따른 프로그래밍(대표 언어 : c언어)
일어난다 -> 씻는다 -> 밥을 먹는다 -> 버스를 탄다-> 요금을 지불한다 -> 학교에 도착

<객체 지향 프로그래밍>

-객체들 사이의 인터랙션이 일어남, 관계들이 형성됨(대표 언어 : c++,c#,java,JS,Python 등)

=>객체를 정의하고 각 객체 제공하는 기능들을 구현하고 각 객체가 제공하는 기능들 간의 소통(메세지 전달)을 통하여 객체간의 협력을 구현해야함
1.클래스는 대문자로 시작
2.java 파일 하나에 클래스는 여러 개가 있을 수 있지만, public 클래스는 하나이고, public 클래스와 .java 파일의 이름은 동일함
3.camel notation 방식으로 명명(ex: ryuSeungMin)

[OOP 기본 개념]

※함수 호출과 스택 메모리

스택 : 함수가 호출될 때 지역 변수들이 사용하는 메모리
함수의 수행이 끝나면 자동으로 반환 되는 메모리

메서드란?

1.객체의 기능을 구현하기 위해 클래스 내부에 구현되는 함수
2.멤버 함수 (member function)이라고도 함
3.메서드를 구현함으로써 객체의 기능이 구현 됨
4.메서드의 이름은 그 객체를 사용하는 객체(클라이언트)에 맞게 짓는것이 좋음
예) getStudentName()

인스턴스란?

1.클래스는 객체의 속성을 정의 하고, 기능을 구현하여 만들어 놓은 코드 상태
2.실제 클래스 기반으로 생성된 객체(인스턴스)는 각각 다른 멤버 변수 값을 가지게 됨
가령, 학생의 클래스에서 생성된 각각의 인스턴스는 각각 다른 이름, 학번, 학년등의 값을 가지게 됨
3.new 키워드를 사용하여 인스턴스 생성

힙 메모리

1.생성된 인스턴스는 동적 메모리(heap memory) 에 할당됨
2.C나 C++ 언어에서는 사용한 동적 메모리를 프로그래머가 해제 시켜야 함 ( free() 난 delete 이용) 그러나 JAVA에서 Gabage Collector 가 주기 적으로 사용하지 않늠 메모리를 수거
3.하나의 클래스로 부터 여러개의 인스턴스가 생성되고 각각 다른 메모리 주소를 가지게 됨

<요약>

	객체 : 객체 지향 프로그램의 대상, 생성된 인스턴스

    클래스 : 객체를 프로그래밍 하기위해 코드로 정의해 놓은 상태

    인스턴스 : new 키워드를 사용하여 클래스를 메모리에 생성한 상태

    멤버 변수 : 클래스의 속성, 특성

    메서드 : 멤버 변수를 이용하여 클래스의 기능을 구현한 함수

    참조 변수 : 메모리에 생성된 인스턴스를 가리키는 변수

    참조 값 : 생성된 인스턴스의 메모리 주소 값

생성자(constructor)란?

-생성자 기본 문법

<class_name>([<argument_list])
{
	[<statements]
}

1.객체를 생성할 때 new 키워드와 함께 사용 - new Student();
2.생성자는 일반 함수처럼 기능을 호출하는 것이 아니고 객체를 생성하기 위해 new 와 함께 호출 됨
3.객체가 생성될 때 변수나 상수를 초기화 하거나 다른 초기화 기능을 수행하는 메서드를 호출 함
4.생성자는 반환 값이 없고, 클래스의 이름과 동일
5.대부분의 생성자는 외부에서 접근 가능하지만, 필요에 의해 private 으로 선언되는 경우도 있음

  • 기본 생성자(default constructor)
-클래스에는 반드시 적어도 하나 이상의 생성자가 존재
-클래스에 생성자를 구현하지 않아도 new 키워드와 함께 생성자를 호출할 수 있음
-클래스에 생성자가 하나도 없는 경우 컴파일러가 생성자 코드를 넣어 줌 -> public Student(){}
└즉 클래스에 생성자가 명시되어있을 경우 기본 생성자는 사용할 수 없음, 기본생성자도 따로 만들어 주면 사용가능
-매개 변수가 없음, 구현부가 없음

참조 자료형이란?


1.클래스형으로 변수를 선언
2.기본 자료형은 사용하는 메모리의 크기가 정해져 있지만, 참조 자료형은 클래스에 따라 다름
3.참조 자료형을 사용 할때는 해당 변수에 대해 생성하여야 함 (String 클래스는 예외적으로 생성하지 않고 사용할 수 있음)

접근 제어 지시자 (accesss modifier)


1.클래스 외부에서 클래스의 멤버 변수, 메서드, 생성자를 사용할 수 있는지 여부를 지정하는 키워드
2.private : 같은 클래스 내부에서만 접근 가능 ( 외부 클래스, 상속 관계의 클래스에서도 접근 불가) -> 접근 제어자를 선언함으로써 객체를 사용함에 있어서 오류를 막을 수 있음!
3.default : 같은 패키지 내부에서만 접근 가능 ( 상속 관계라도 패키지가 다르면 접근 불가)
4.protected : 같은 패키지나 상속관계의 클래스에서 접근 가능하고 그 외 외부에서는 접근 할 수 없음
5.public : 클래스의 외부 어디서나 접근 할 수 있음

profile
功在不舍

0개의 댓글

관련 채용 정보

Powered by GraphCDN, the GraphQL CDN