2022. 10. 2. 21:40ㆍjava일지
2022/09/30
- 학습내용
1.객체(Object)
쉽게 이해하기 위해 객체 = 사물로 단어 대체 설명
사물은 속성과 기능을 가지고 있고, 연관성이 있는 사물은 같은 분류로 묶을 수 있다.
공통적인 특성을 가진 분류로 사물들을 묶는 작업이 중요하다!!
객체 스마트폰 ex)
스마트폰이라는 객체를 제조사 두 곳으로 나누어 분류한다.
다시 모델에 따라 새로운 분류로 나눈다.
스마트폰 구성요소 ex)
- 속성: AP, RAM 용량, 저장 장치, 카메라
- 기능: 통화 하기, 사진 찍기, 영상 재생하기 등
속성 : 정적인 정보
기능 : 작업에 대한 수행
프로그래밍에서는 속성 = 멤버변수, 기능 = 메서드 함수 로 대응된다.
스마트폰이 실제의 형태로 소비자에게 전달되려면 설계에 맞게 생산과정을 거쳐야 한다.
이 때 설계도가 프로그래밍에서 클래스이다.
그리고 생산된 스마트폰이 인스턴스이다.
★이 인스턴스가 바로 객체다.
클래스에서 인스턴스를 생성하지 않으면 이를 메서드를 사용할 수 없다.
2.객체지향 프로그래밍(Object Oriented Programming, OOP)
프로그램을 단순히 데이터와 처리 방법으로 나누는 것이 아니라,
프로그램을 수많은 '객체(object)'라는 기본 단위로 나누고 이들의 상호작용으로 서술하는 방식이다.
필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고
객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다.
(Object Oriented Programming, OOP) 4대 특징
oop를 질문 받았을 때 항상 이야기하는 4대 특징이 있다.
1) 캡슐화(정보 은닉)
데이터와 코드의 형태를 외부로부터 알 수 없게 하고, 데이터의 구조와 역할, 기능을 하나의 캡슐 형태로 만드는 방법이다.
흔히 정보 은닉이라 많이 불리는데 캡슐화 방법에는 2가지 정도가 있다.
ⓛ private
멤버 변수 앞에 접근 제어자 private를 붙인다.
private를 붙이면 자기 클래스에서만 접근할 수 있다.
② getter/setter
멤버 변수 앞에 값을 넣고 꺼내 올 수 있는 메서드 getter/setter를 붙인다.
2) 추상화
클래스들의 공통적인 특성(변수, 메소드)들을 묶어 표현한다.
공통적인 특성이기 때문에 각각의 클래스를 확실히 구분할 수 없기에 추상화이다.
3) 상속화
부모 클래스에 정의된 변수 및 메서드를 자식 클래스에서 상속받아 사용한다.
4) 다형화
다양한 형태로 표현이 가능한 구조를 말한다.
메시지에 의해 객체가 연산을 수행하게 될 때,
하나의 메시지에 대해 각 객체가 가지고 있는 고유한 방법으로 응답할 수 있는 방법이다.
다형화 지원 방법에는 2가지 정도가 있다.
ⓛ 오버로딩 (Overloading)
하나의 클래스 안에서 같은 이름의 메서드를 여러 개 정의한다.
② 오버라이딩 (Overriding)
부모 클래스로부터 상속받은 메서드 내용을 변경하여 사용한다.
매개변수와 리턴 타입이 같아야 한다.
3.생성자(constructor)
클래스로부터 인스턴스를 생성하는 메서드의 한 종류이다.
클래스 내부에 정의해야 하며, 메서드명이 클래스명과 일치해야 하는 규칙이 있다.
생성자 내부에는 인스턴스 생성시 수행할 명령과 멤버변수의 초깃값을 설정하는 코드를 작성한다.
클래스 내부에 정의된 생성자는 반드시 new 연산자와 함께 쓰여야 새로운 인스턴스를 생성한다.
클래스 내부에 생성자를 정의하지 않으면 인스턴스를 생성할 수 없는 쓸모 없는 클래스가 된다.
※기본 생성자
java 컴파일러는 클래스 내부에 생성자가 정의되어 있지 않으면
public 클래스() { } 과 같이 파라미터가 없는 생성자를 자동으로 추가한다.
this.
인스턴스가 자기 자신을 가리키는 특수한 변수이다.
// 기본 생성자
BankAccount(int bankCode, int accountNo, String owner, int balance, int password) {
this.bankCode = bankCode;
this.accountNo = accountNo;
this.owner = owner;
this.balance = balance;
this.password = password;
this.isDormant = false;
ex) this.bankCode 는 생성될 인스턴의 변수
bankCode는 파라미터로 넘겨받아 인스턴스에 할당할 값
- 참고자료
항해99 spring 입문학습
'java일지' 카테고리의 다른 글
프로그래밍 기초탄탄#5 java- ==, equals (0) | 2022.10.03 |
---|---|
프로그래밍 기초탄탄#4 java-상속, 접근 제어자, 인터페이스 (0) | 2022.10.03 |
프로그래밍 기초탄탄#2 java-class (0) | 2022.09.29 |
프로그래밍 기초탄탄#1 java-자료형,연산자, 조건문,반복문 (0) | 2022.09.25 |
프로그래밍 기초#2 java-연산자, 조건문 (1) | 2022.09.23 |