객체지향 프로그래밍 (Object Oriented Programming, OOP)
기능을 제공하는 명령어들을 묶어서(객체화) 작성하고 다른 명령어 묶음과 연계하여 구현하는 프로그래밍 방식
객체 = 정보 + 기능
= 필드(멤버 변수) + 메소드
객체는 속성과 동작으로 구성, 자바는 이러한 속성과 동작을 각각 필드와 메소드라고 부른다.
객체 간의 관계
집합관계
사용관계
상속관계
객체 지향의 특성
1. 캡슐화(Encapsulation) : 필드와 메소드를 하나로 묶고 실제 구현 내용을 숨김 -> class를 만드는 작업
정보은닉(Informaiton Hiding) : 접근제어자를 사용하여 객체 내부의 정보를 숨김
2. 상속(Inheritance) : 부모의 특성을 그대로 물려받고 새로운 것을 추가하는 것 -> 부모 클래스와 자식 클래스 형태로 구현
코드 재 사용성을 높이고, 버전 호환을 제공하며, 유지 보수 수월함을 제공
3. 다형성(Polymorphism) : 같은 이름이지만 모양이 다른 것
사용방법은 동일하지만 실행결과가 다르게 나오게 구현하는 것, 대표 이름 개념
상속과 맞물려 있음.
메서드 이름이 동일하지만 결과가 다른 부분, 대표 이름의 개념 두가지로 출력 가능
4. 추상화(Abstraction) : 개념을 정의하는 것, 대략적인 상태를 정의하고 실체로서 구현하는 방법
예) 동물은 소리를 낸다 - 어떻게 구현하겠는가?
객체
캡슐화 - 클래스를 작성하는 것
클래스의 종류
1. 정보 클래스
2. 부품 클래스
3. 제어 클래스
정보클래스 - DTO(- Data Transfer Object), VO(value Object). 변수를 제공, 기억 공간을 제공
1) 필드(멤버변수) - 정보 저장을 위한 공간
2) Setter 메소드 - 필드에 값을 저장하기 위한 기능
3) Getter 메소드 - 필드의 값을 가져오기 위한 기능
웹 사이트 구축에 필요한 기본적인 사항 - 회원 정보
회원 정보에 필요한 인적 사항을 도출해 보자.
- 이름, id, 비밀번호, 주소, 연락처, 나이 -> private
package dto;
public class MemberDto {
// 필드 작성(선언) - 초기화 없이 선언
private String name;
private String id;
private String password;
private String address;
private String phone;
private int age;
}
클래스의 멤버변수(필드)의 초기화는 자동으로 처리된다. - 쓰레기값 지우기
0에 해당하는 값으로 자동 초기화
정수형 (byte, short, int, long) - 0
문자형(char) - \u0000 -> 0
실수형(float, double) - 0.0
참조형(String, 그 외 모든 인스턴스 저장 변수) - null
setter 메소드 작성 규칙
public void set + 필드명(필드와 같은 타입의 매개변수){
필드 = 매개변수;
}
getter 메소드 작성 규칙
public 필드의 타입 get + 필드명() {
return 필드;
}
(메소드 이름은 카멜케이스로 작성, 필드명(변수명)의 첫 글자를 대문자로)
접근제어자
정보 은닉 및 객체 보호를 위한 제어자
1) public - 공공의, 공개, 제한 없음, 주로 메소드에 붙임
2) default - 접근제어자를 작성하지 않으면 default, 같은 패키지(내의 클래스)의 다른 객체에서는 접근 가능
3) protected - 같은 패키지, 다른 패키지여도 상속한 객체에서는 접근 가능
4) private - 비공개, 인스턴스 내부에서만 사용
접근 범위
public > protected > default > private
패키지가 경계가 된다.
접근제어자 사용 위치
1) 클래스 앞(보통 private는 붙이지 않는다. 붙이면 설계도를 가지고 올 수 없다. 붙이는 경우는 서브설계도로 사용할 때)
2) 멤버 변수(필드) 앞
3) 메소드 앞
※ 지역 변수 앞에는 붙이지 않는다.
대부분의 경우 멤버 변수 앞에는 private, 변수 자체는 보호해야 한다.(필드는 보호)
메소드 앞에는 public
콘솔용 - 웹용 코드의 재사용
MVC패턴
Model - dto, servide, dao
View - Scanner, print
Controller - 제어
오전에 View + Controller 같이 된 것을 만들어 본 것!
작업 프로세스
골격 - 프레임워크 -> Spring 프레임워크
Controller -> View(출력) -> View(입력) -> Controller -> Model -> Controller -> View(출력)-> Controller
package subpkg;
public class UseClass {
private int aaa;
int bbb; // default 접근제어
public int ccc;
}
같은 package에서 aaa는 불러올 수 없다.
다른 패키지에서 불러오기 aaa, bbb는 사용불가, public만 사용가능하다.
'공부기록 > Java' 카테고리의 다른 글
4월 13일 (2) Java - this, 생성자 오버로딩, 실습 (0) | 2023.04.13 |
---|---|
4월 13일 (1) Java - 기타 제어자, 생성자 (0) | 2023.04.13 |
4월 12일 (1) Java - 데이터 관리 프로그램 (0) | 2023.04.12 |
4월 11일 (2) Java - 변수 용어, 저장 위치 (0) | 2023.04.11 |
4월 11일 (1) Java - 배열, 리스트 (0) | 2023.04.11 |