-
JAVA - 클래스IT/JAVA 2020. 4. 25. 23:45반응형
SK 고용디딤돌 직무 교육 시간에 배웠던 내용들을 다시 한번 읽어보며 정리해보았다.
요번에는 '클래스'에 대해서 다룰 것이며 자바의 기초라고 생각한다.
객체 지향 프로그래밍
OOP - Object Oriented Programing
객체가 중심이 되는 프로그래밍
부품 객체를 먼저 만들고 이것들을 하나씩 조립해 완성된 프로그램을 만드는 기법
객체란?
필드(속성, 변수)과 메소드(동작)으로 구성된 자바 객체로 모델링 가능
객체 = 관련된 변수/ 함수 묶음이라고 할 수 있다.
- 관련된 변수/함수를 사용자 정의 type 이다.
- 사용자정의 type 인데, 그것은 참조 type 이다.
VOP
- 변수 중심
FOP(절차지향)
- 함수 중심
OOP(객체 지향)
- 객체 중심
ex) 은행 이체 업무를 풀어본다면, A라는 사람이 현재 잔고에는 1000원이 있다.
B라는 사람한테 현재 500원이 있다.
A가 B한테 100원을 이체한다면, 얼마가 될까?
A = 1000;
B = 500;
A = A -100;
B = B + 100;
이것은 모든 데이터가 변수로 인해서 진행된다. (VOP)
A = 1000;
B = 500;
transfer(A:B:50)
이것은 함수가 맨앞에 나오고, 변수들은 뒤에 목적어로 간다.
함수가 중심으로 되서 관련된 객체들을 다루는 FOP이다.
Account {
int balance //잔고
Account a,b
a.balance = 1000;
b.balance = 500;
a.transfer(b, 50); //이체
맨앞에 나오는 것이 객체이다. 그다음에 함수가 나오고 관련되있는 목적어들이 나온다. 이것이 객체 지향 언어의 특성이다.
객체 위주로 모든 상호작용이 일어난다. 이것이 OOP이다.
변수중심과, 함수중심, 객체중심은 생각하는 것이 다르다.
변수중심에서는 솔루션이 뭐인지, 함수중심에서는 어떻게 블록으로 나눌 건지 생각을 하게되고, 객체중심에서는 어떻게 객체로 설계 할 것인지 라는 관점이다.
객체 지향 프로그래밍 특징
1. 캡슐화
관련되있는 변수와 함수를 묶고, 실제 구현 내용을 감추는 (스트럭처는 관련되있는 변수와 함수를 묶는 것이다.)
외부 객체는 객체 내부 구조를 알지 못하며 객체가 노출해 제공하는 필드와 메소드만 이용가능하다.
필드와 메소드를 캡슐화하여 보호하는 이유는 외부의 잘못된 사용으로 인해 객체가 손상되지 않도록 하기 위함이다.
2. 상속
3. 다형성
다양한 행위를 이야기하는 것이다.
프로그래밍에서 행위는 동작, 함수 라고 할 수 있다.
보통 상속관계에서 많이 발생하는데, 같은이름을 가지고 상황에 따라서 다양하게 분기할 수 있게 해주는 메카니즘이다.
객체와 클래스
객체는 type에 해당된다.
클래스는 객체를 정의하기 위한 키워드이다.
클래스에는 객체를 생성하기 위한 필드와 메소드가 정의
클래스로부터 만들어진 객체를 해당 클래스의 인스턴스
하나의 클래스로부터 여러 개의 인스턴스를 만들 수 있다.
클래스 이름
하나 이상의 문자로 이루어져야 한다.
첫 번째 글자는 숫자가 올 수 없다.
자바 키워드는 사용할 수 없다.
알파벳 대소문자는 서로 다른 문자로 인식한다.
첫 글자와 연결된 다른 단어의 첫 글자는 대문자로 작성하는 것이 관례이다.
클래스 선언과 컴파일
소스파일 생성 : 클래스이름 java (대소문자 주의)
소스 작성
public class 클래스 이름 {
}
소스파일 당 하나의 클래스를 선언하는 것이 관례이다.
두개 이상의 클래스도 선언 가능하다.
소스 파일 이름과 동일한 클래스만 public으로 선언 가능하다.
선언한 개수만큼 바이트 코드 파일이 생성된다.
new 연산자
new 클래스();
클래스는 생성자를 호출하는 코드이다.
생성된 객체는 힙 메모리 영역에 생성한다.
클래스 변수
1. 클래스 변수 :
변수 = new 클래스();
- 이 방법은 new를 생성하는 것을 자꾸 깜빡하게 한다.
선언만 해주는 코드가 제일 위험하다.
그런 케이스를 막을 수 있는 방법이 2번 방법이다.
2. 클래스 변수 = new 클래스();
클래스 용도
1. 라이브러리(API)용
- 자체적으로 실행되지 않음
- 다른 클래스에서 이용할 목적으로 만든 클래스
2. 실행용
- main()메소드를 가지고 있는 클래스로 실행할 목적으로 만든 클래스
클래스의 구성 맴버
- 필드(FIeld) - 객체 생성시 자동으로 기본적으로 초기화.
- 생성자(Constructor)
- 메소드(method)
필드 : 객체의 데이터가 저장되는 곳
생성자 : 객체 생성시 초기화 역할 담당
메소드 : 객체의 동작에 해당하는 실행 블록
접근 제한자(Access Modifier)
JAVA는 접근제한자 4개를 제공한다.
public - 외부 접근 가능.
protected - 객체의 상속관계에서 발생한다.
default - 다른패키지에 접근이 안된다.
private - 외부 접근이 안됨. 상속은 받는데 접근은 안된다.
생성자 접근 제한 방법은,
생성자 앞에 private를 입력하면 된다.
Getter, Setter
ex) public void setAge(int age)
public void getAge(int age)
Getter - private 필드의 값을 리턴하는 역할
<필요할 경우 필드 값 가공>
Setter - 외부에서 주어진 값을 필드 값으로 수정
기본적인 클래스에 대해서 다룬 내용들을 정리 해보았다.
요것들이 나의 지식이 되어 프로그래밍에 대한 기본지식이 성장하길 바라며.. 끄적끄적..
안녕히계세용 :)
반응형'IT > JAVA' 카테고리의 다른 글
JAVA - 로또 게임 만들기 (9) 2020.04.28 JAVA - 가위바위보 만들기 (0) 2020.04.28 JAVA - 상속 및 인터페이스 (0) 2020.04.28 JAVA - 조건문과 반복문, 그리고 배열 (0) 2020.04.25 JAVA - 변수 및 연산자 (0) 2020.04.25 댓글