항해99 개발일지

[항해99] 12일차 (TIL : 주특기 입문 Spring)

펭귄코기 2022. 9. 30. 23:32

오늘부터는 각각의 주특기를 3주간 입문, 숙련, 심화 과정으로 나눠서 학습에 들어간다

 

이번주는 입문이므로 완전 처음 배운다는 마음으로 개념 정리와 실습한 내용을 기록해 보고자 한다

 

또한 오늘 시험본 내용도 올려보려 한다

https://github.com/vuddus526/oopTest.git

 

GitHub - vuddus526/oopTest

Contribute to vuddus526/oopTest development by creating an account on GitHub.

github.com

 

 

객체지향

객체 즉 사물이 공통적으로 가지고 있는 특성을 묶어

그 관계를 구조화 하는것 이라고 보면 된다

 

클래스와 인스턴스

클래스 == 스마트폰 설계도

인스턴스 == 스마트폰

멤버변수 == 사물이 가진 속성(정적)

메서드(함수) == 사물이 가진 기능(동적)

 

생성자 (Constructor)

설계도가 있다고 그 기능을 사용할 수 있는 것이 아니듯이

클래스에서 인스턴스를 생성하지 않으면 이를 활용할 수 없다

 

생성자는 클래스로부터 인스턴스를 생성하는 메서드의 한 종류이다

클래스 내부에 정의하며, 메서드명이 클래스명과 일치해야 한다

 

new 연산자와 함께 새로운 인스턴스를 생성해서 사용한다

 

상속 (Inheritance)

예를들어 은행에서 계좌의 종류가 수백가지 일텐데

하나하나 전부 구현하는건 비효율적이라는 생각이든다

특히 공통적으로 가지는 속성에 수정 사항이 생긴다면

수백개를 다 수정해줘야 하는 일이 생겨버린다

 

이때 하나의 공통적인 속성을 모아두는 설계도 (부모클래스)를

만들어서 공통적인 속성은 가져다 쓰면서 개별 속성이나 메서드를 추가해 쓸 수 있다

 

class 부모클래스 extends 자식클래스 와 같이 extends 키워드로 연결해주면

클래스간 상속 관계가 형성된다

 

주의해야할 점은 자바는 단일 상속만 되기에 class 부모클래스 extends 자식클래스1, 자식클래스2

이런식으로 작성이 불가능하다

 

오버로딩, 오버라이딩

오버로딩(overloading) - 과적

조상 클래스에서 상속받은 메서드에서 파라미터를 변경하여 새로운 메서드를 정의하는 것

 

오버라이딩(overriding) - 덮어쓰기

조상 클래스에서 상속받은 메서드의 내용을 자식클래스의 상황에 맞게 변경해서 정의하는 것

주의할점은 오버로딩된 메서드와 다르게 부모클래스의 파라미터 설정을 그대로 따른다

 

접근제어자(Access Modifier) 와 Getter / Setter

접근제어자는 클래스, 멤버변수, 메서드, 생성자 등에 대한 접근을 제한하는 역할을 수행하는 키워드

무분별한 접근 및 수정을 막기 위해서도 있고 공개할 필요없는 시스템 내부의 값들을 가리는 용도로도 쓰인다

이를 정보 은닉, 혹은 캡슐화 라고 한다

 

Getter / Setter는 멤버변수를 직접 호출하지 않고 값을 조회 / 할당하기 위해서 사용되는 함수다

 

Getter

- 멤버 변수의 값을 조회하기 위한 메서드

- get멤버변수명() 의 형식으로 명명

- 객체변수.get멤버변수명() 의 형식으로 사용

 

Setter

- 멤버 변수에 값을 할당하기 위한 메섣

- set멤버변수명(파라미터) 의 형식으로 명명

- 객체변수.set멤버변수명(파라미터) 의 형식으로 사용

 

인터페이스(Interface)

설계 이전 스케치 수준의 클래스이다

메서드의 이름과 파라미터, 반환 형식만 가질뿐 실제 구현부는 가질수 없다

클래스처럼 인스턴스를 생성하는 것도 불가능하다

인터페이스는 기능의 표준화를 달성하도록 하는 도구이다

 

공통적인 기능을 일정한 단위로 인터페이스로 묶어 처리한 다음 이를 구현할 클래스에서

각 업무 로직에 맞게 구현할 수 있다

 

만약 여러 클래스에 걸쳐 신규 기능이 생기거나 삭제 기능이

있다면 인터페이스라는 표준화 도구를 통해 효율적인 코드 작성이 가능해진다

 

메서드 구현은 implements 키워드를 사용하여 별도의 클래스 파일에서 해주어야 한다

 

그레이들 (Gradle)

스프링 어플리케이션을 빌드해주는 도구이다

단순히 빌드만 하는것이 아닌 스프링 프로젝트에 적용할 각종 의존성 및 옵션을

build.gradle 이라는 파일을 통해 관리할 수 있다는 장점이 있다

 

일단 의존성이란 다른 개발자가 만든 기능을 외부에서 가져다 쓴다고 보면되는데

라이브러리 개념인거같다

 

의존성 dependencies에 소스를 하나 추가해줘야하는데

 

아래의 Maven Repository 에서 원하는 라이브러리를 찾아줘야한다

 

spring boot DevTools 를 검색해서 본인에게 맞는 버전을 찾아서

 

gradle 소스를 복사해서 인텔리제이에서 넣어주면된다

 

https://mvnrepository.com/

 

웹브라우저에서 화면 띄우는 방법

package com.sparta.week01.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class CourseController {

    @GetMapping("/courses")
    public Course getCourses() {
        Course course = new Course();
        course.setTitle("웹개발의 봄 스프링");
        course.setDays(35);
        course.setTutor("남병관");
        return course;
    }
}
class Course {
    String title;
    int days;
    String tutor;

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public int getDays() {
        return days;
    }

    public void setDays(int days) {
        this.days = days;
    }

    public String getTutor() {
        return tutor;
    }
    public void setTutor(String tutor) {
        this.tutor = tutor;
    }
}

 

오늘 공부시간