Back-end Skill/Springboot

11월 4일 spring 실시간강의 정리본

Sophie소피 2021. 11. 4. 13:05

concecptual ,Inheritance상속, modeling 

What is ...object ...?   

=  모든 것은 사물이다. everything is an object in java

     eg) 프로그래밍에서 객체는 예를 들어 기능을 설계한다고 가정해보자 

         고객, 라이더, 가게 각각 어떤기능이 필요한지 설계한다 (도메인 지식) 

            고객 보니까 뭘 필요할까? 모델링한다 

              고객이 주문기능을 하기 위해 어떤 메소드가 필요할까? 

 

상속 - 상속은 다시 사용이 가능하다 (다형성)

//고객 추상화 모델링하면서  = >  필요없는 정보는 걸러낸다
package lec.object;
public class User {
user name
phone number
adress 
location information
etc }
public class Barista extands person {

kind of 원두

barista name

etc .... 

}

 

객체지향의 다형성이 용이하다라는 말은 무엇일까..? 

바리스타가 춤을추며 커피를 만들든 

노래를 하며 노래를 만들든 ... 물구나무를 서서 만들든 ....

어떤 방법으로 커피를 만들어도 커피를 먹어야한다는 조건을 가지고온 고객에게는 크게 인터페이스가 상관이 없다. 

즉 방법이 바꾸는게 쉽고 용이하다는 것이다. 

 

하나의 객체가 여러타입을 가질 수 있는 것. 

   - 타입을 어떻게 가지는지 알아보기. 

객체지향은 ~이렇게하면 편하더라! 이런 느낌 .. 

interface Bird 
void 


interface Aniaml {
void eat(string food); 
} 

//자문뽀

 

 

프로그래밍의 설계개념 

 

결합도 coupling 

결합도의 의미는 의존성이 있다고 한다. 

주 목적은 결합도는 낮추고 응집도는 높인다. 

      eg) 물구나무서기하면서 커피를 만드는데 고객이 시비를 건다 ...?

            그러면 설계를 통째를 바꿔야하는데 그건 안좋은 설계이다. 

-모듈 독립성 '지표'

어떤 프로덕트를 지향해야할까? 바로 = > 결합도가 낮은거를 지향해야한다! 언제든지 뗏따 뺏다하기 용이하니까

- 고객 -- 메세지 --

바리스타-> 힙스터 바리스터 ..? 더 멋지네 이걸로 바꾸자 ! (바꾸기가 용이함)

즉, 객체지향프로그래밍은 객체가 각각의 역할과 책임이 있고 메시지로 상호작용해서 협력해나가는 것.

        

사칙연산 - 덧 , 뺄, 나, 곱 

   사칙연산 - 곱

계산기 - 덧 

가게 - 나 //응집도가 개판이다

 

모델링 설계,  추상화 

프로그래밍은 class를 강조하지 않지만, 자바는 class가 강제로 꼭 들어가야하고 파일명으로 만들기도한다. 

  -class라는 조립하고 만드는게 중심이다. 

  - class가 왔다갔다 어떤 단위로 넘어가는지의 흐름을 보는게 중요하다 

            eg) 고객 --- 마카롱집 (둘이 상호작용을 하면서 기능을 만드는 것, 객체는 서로 상호 작용을 해야한다.)

                고객이 주문을 넣고 마카롱집은 만들고 팔고 계산하고 전달하는 것 까지 

 - 실제 기능은 객체지향으로 하려면 추상화하면서 메세지 어떤식으로 전달하고 받고 상호작용 하는 것을 해야한다. 

 

클래스 확장 ...............................................................

https://docs.oracle.com/javase/tutorial/java/concepts/object.htm

 

 

Interface

UI: program -- --- User 

API: program -- --- program

HTTP API 

: 야 데이터 내놔 --- 드리겠습니다

JAVA API Doc 

      code -- Interface --- code (system.out.println 자동 코드 생성 기능)

 

- 인터페이스 (상속, 주로 자바 스프링에서 계속 만들어서 사용한다.) 

 객체가 각각의 역할과 책임이 있고 메세지로 상호작용해서 협력해내가는 것

    - 내부는 내알바 아님 . 그냥 interface 만 지키면 내부구조 동작원리 몰라도됨.

    - 설계 객체의 인터페이스느 객체가 수신할 수 있는 메세지 목록으로 구성됨

    - 객체가 어떤 메세지를 수신할 수 있는지가 객체가 제공하는 인터페이스의 모양을 빚는다. 

 

eg) 

  • - 자동차 - 운전자 
  • -  자동차 테슬라
  • - 자동차 포르쉐 
  • - 자동차 캐스퍼 

      운전자 --interact ---자동차 

       운전자A - 캐스퍼B -> 주식 성공해서 테슬라C로 바꿔도 상관없음 ~ 코인 가자 ~

 

 

 

가비지 컬렉션-> gc = java가 메모리 코드 정리해줌 

 

하나의 메소드에 들여쓰기 한번만 해라!

 

public class prac {
    public static void main (string[]args){
         Course course = new course();
         course.title = WebDevelopSpring";
         system.out.println(course.title);
         system.out.println(course.tutor); 
         }
    }

gradle clean = 

 

java에서 null= none 의 의미 = null point inception 

값을 안넣고 초기화를 안해줘서 

 

 

ABOUT 생성자

말 그대로 생성될 때 호출되는 자

정확히 뭐가 생성되냐면 클래스가 생성이 될 때 

그 생산자가 호출이 최초로 되면서 이제 클래스 객체 초기화에 필요한 것들을  만들어주는 과정!

public class User {
     string name; //이름 
     int age;  //나이 
     String hobby; //취미 
     //클래스의 생성자 
      public User (String_name, int_age, String_hobby){    //매개변수 받을 준비 
      name = _name;
      age = _age;
      hobby = _hobby;
      //이 자리에다가 코드를 실행하게 된다. 
      } //사실 지금이게 컴파일러가 이미 그 클래스 자체에 디폴트값으로 저장시켜둔 것
     public static void(string[] args) { 
     }     
 }

이 때 생성자 개념은 클래스와 이름이 일치해야한다.

이름, 나이, 취미를 넣어줄 공간이 필요하다. 

 

의미있는 객체가 되려면 처음에 만들 때 값을 넣어서 사용하면 되지 않을까? 

this라는 걸 쓴다 (의존성 주의)

 

 

 

  • getter, setter

 

 

 

 

 

 

 

 

  • RDBMS

 

 

 

 

 

 

 

 

  • Spring Data JPA4

 

 

 

 

  • gradle 

 

 

 

 

  • JDBC

디비 연결하는거 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

 

 

 

자바만든 윤아팬 제임스 고슬링 아저씨