자바 3주차 정리

선장원·2021년 10월 24일

자바

목록 보기
18/24

3주차 (11~15일차)

이번주는 복습과 문제 풀이를 너무 많이해서 아마도 정리 할 것이 없을 것 같은데 한번 해보자
까먹으면 안되니까

11일 클래스 객체
12일 ArratList
13일 접근제한자 foreach
14일 DTO Service
15일 복습 문제

객체지향 프로그래밍

  • 코드를 나누자
  • 모든 사물(객체 object, 물건 사람 캐릭터 스텟등등)을 코드로 표현하자
  • 어떠한 객체의 구조적 틀을 클래스로 정의하고 실제 내용을 대입하고자 할 때

    어떠한 기능 또는 정보들을 나누어서 메인클레스에서 객체화를 통해 사용한다

클래스

  • 어떠한 객체의 구조적 틀
  • 필드
    1. 그 객체의 속성(가지고 있는 요소 또는 정보)을 표현하기 위해 필드 사용
    ex) 훈련생의 속성 : 이름 나이 전화번호 전공
  • 생성자
    1. 해당 클래스를 객체로 만들 때 어떤형식으로 만들어야 하는지를 위해 생성자 사용
    a. 생성자는 클래스 이름과 동일
    b. 생성자를 아무것도 쓰지 않았다면 기본 생성자 생략가능
    c. 생성자 오버로딩 : 생성자를 변수의 개수, 타입등으로 여러개 생성
  • 메서드
    1. 특정한 기능을 수행하기 위해 메서드(method)사용
    a. 리턴유무
    b. 매개변수를 활용해서 리스트를 받아서 추가 하거나 다양한 기능을 만들 수 있다
  • 매개변수
    1. 생성자 또는 메서드 이름 옆 소괄호 안에 작성
    2. 모든 타입이 다 올 수 있음
  • 객체를 다룰 때
    1. 활용할 수 있는 데이터의 형태는 무한대이다
    a. 기본형 타입은 물론이고 모든 클래스 타입을 다 다룰 수 있다
    b. 내가 만든 클래스의 타입 또는 변수 등 사용가능
    c. 매개 변수도 모든 타입이 올 수 있다
    d. 리턴도 모든 타입이 올 수 있다

ArrayList

Collection Framework안의
List - ArrayList
Map - HashMap
Set - Hashset

3중에 List??

배열은 한번에 크기를 만들고 남는 공간은 낭비가 된다

하지만 arraylist는 크기가 능동적이다
데이터를 추가하면 크기가 늘어나고 지우면 줄어들고 유연하게 이루어 진다.

새로운 데이터를 넣으면 알아서 한 칸씩 뒤로 밀린다
인덱스(index)를 가지고 있다.
리스트를 선언할 때 타입을 정한다

선언

		// 선언
		// List 객체이름 : list1
		// List에 담을 수 있는 데이터 타입 : String
		// <> 데이터 타입 클래스 이름만 가능
		List<String> list1 = new ArrayList<String>();

바꿀 수 있는 것은 변수와 <>사이의 클래스이름만 변경 가능

List<String> list1 = new ArrayList<>();

뒤에 <>에는 안 써도 앞의 <>와 같다고 인식해서 생략이 가능하다

<> 사이에 String등등 보다 우리가 직접 만든 클래스가 들어간다.

ArrayList 라는 클래스 객체를 만들어서 사용하기 때문에 ArrayList 가 가지고 있는 여러 메서드(add, get, size, remove등)를 활용 할 수 있음

<>의 의미

<>사이의 데이터를 object로 변환해서 저장하고 다시 가져올 때 String으로 변환해서 가져와야 하는데 그 과정을 지워준다????

오브젝트로 변환하는 과정을 지우고 그 클래스를 그냥 저장한다는 건가

Wrapper 클래스

int : Integer
long : Long
double : Double
boolean : Boolean

이건 잘 모르겠다

데이터 저장

		list1.add("첫번째 데이터");
		list1.add("두번째 데이터");
		list1.add(1, "어디에 들어갈까요");
		list1.add(1, "이건 어디에?");

출력을 하면
첫번째 데이터
이건 어디에?
어디에 들어갈까요
두번째 데이터
위 처럼 나온다. add가 사용 될 때 마다 하나 씩 뒤로 밀린다

줄이동이 자유롭다 새치기도 가능하고 한자리가 빠지면 알아서 위로 올라간다

데이터 사용

		System.out.println(list1.get(0));
		System.out.println(list1.get(1));
		System.out.println(list1.get(2));
		System.out.println(list1.get(3));

리스트 크기 확인

.size() : 크기 확인 메서드
System.out.println(list1.size());

데이터 삭제

remove(index) : index의 자리에 있는 데이터를 지우고 아래 데이터를 한 칸씩 올린다.

foreach

자바 파이썬 등등 다른 언어에서도 사용 된다

대량의 데이터가 들어있는 객체(배열/리스트)에 접근 할 때

	for (String var: list) {
		System.out.println(var);
	}

for (반복변수: 반복접근할 객체)

주의 : 반복변수와 반복접근용객체의 데이터 타입은 동일해야함

들어있는데이터를 모두 출력하고 없으면 정지

이거는 조금 헷갈린다

접근제한자

클래스, 필드, 메서드 생성자 등에 붙일 수 있으며, 해당 요소의 공개범위(접근범위)를 지정하는 것
public, default, protected, private 4가지

공개 범위를 지정하는 것?

public

어디서든 접근이 가능하다

default

접근 제한자를 쓰지 않으면 default
같은 패키지 소속에서만 접근가능

protected

같은 패키지 또는 상속 받은 객체들만 접근 가능

private

같은 클래스(한파일) 내에서만 접근 가능
다른 클래스에서는 접근 불가능

getter setter

필드 변수 선언을 private로 하고 메서드를 통해서 변경할 수 있도록 설정
무분별하게 변수를 사용하는 것을 막아준다.

마우스 우클릭
source
generate getters and setters를 누르면 자동으로 만들어 준다
필드를 감추기 위함 도 있고

DTO 클래스

  • 필드 변수는 private 접근제한자를 적용
    1. 각 필드 변수에 대한 get()/set()메서드 선언
  • 생성자
    1. 기본생성자
    1. 모든 필드를 매개변수로 하는 생성자
    2. 다른생성자는 필요에 따라
  • toString
  • equals()메서드
  • hashCode

generate constructor using fields

마우스 우클릭
source
generate constructor using fields
생성자를 자동으로 만들어준다
앞의 public은 지워도 괜찮다

getter setter 와 toString 과 같이 DTO 클래스에 만들어 준다

MVC

controller(main)와 DTO와 Service 총 3개의 클래스를 합친 것을 MVC라고 한다고 한다.

다음주부터는 MVC 복습 몇번 하고 데이터베이스로 넘어간다고 한다.

profile
코딩도전기

0개의 댓글