이번주의 키워드(객체지향프로그래밍, JVM)

1.객체지향 프로그래밍이란?(Object-Oriented Programming, OOP)

  • CLASS = 객체를 만들어내는 설계도(빵틀, 금형)
    같은 속성을 가지지만 다른데이터를 가진 수많은 객체를 생성할 수 있다!

  • OBJECT(객체) - 클래스의 인스턴스(실제로 메모리상에 할당된 것)이다. 객체는 자신 고유의 속성(attribute)을 가지며 클래스에서 정의한 행위(behavior)를 수행할 수 있다. 객체의 행위는 클래스에 정의된 행위에 대한 정의를 공유함으로써 메모리를 경제적으로 사용

  • METHOD = 함수(function), 클래스로부터 생성된 객체를 사용하는 방법으로서 객체에 명령을 내리는 메시지!!

INHERITANCE(상속) - 코드 중복을 줄이고 아빠 속성을 물려받음 // extends

👽 4가지 핵심개념

참고자료

Abstraction 추상화 : 구현 세부 정보를 숨기는 일반 인터페이스를 지정하는 행위,

Encapsulation 캡슐화 : 데이터와 클래스 안에 있는 데이터를 이용하는 함수를 잘 정리하는 방법론. 코드의 구조화, Private, Public 선택가능
!! 은닉화 : 객체의 세부 내용이 외부에 드러나지 않아 외부에서 데이터를 직접 접근하는 것을 방지한다. 데이터를 보호!

Inheritance 상속 : 코드 중복을 줄임, 클래스 확장하면 '자식'클래스는 '부모'클래스의 모든속성과 메소드를 상속받게 됨

Polymorphism 다형성 : 프로그램 언어의 각 요소들(상수, 변수, 식, 오브젝트, 함수, 메소드 등)이 다양한 자료형(type)에 속하는 것이 허가되는 성질을 가리킨다. 대표적으로 오버로딩, 오버라이딩, 함수형 인터페이스를 사용하는 것 반복된 코드를 줄이며 꼭 필요한 코드만 수정한다는 장점

참고 -
https://steady-coding.tistory.com/446
https://velog.io/@0sunset0/OOP%EC%9D%98-%EB%84%A4%EA%B0%80%EC%A7%80-%ED%8A%B9%EC%A7%95%EC%B6%94%EC%83%81%ED%99%94%EC%BA%A1%EC%8A%90%ED%99%94%EC%83%81%EC%86%8D%EB%8B%A4%ED%98%95%EC%84%B1

2.JVM (Java Virtual Machine)

참조 (https://www.youtube.com/watch?v=f0cAmTYo4tQ)


(참조:https://doozi0316.tistory.com/entry/1%EC%A3%BC%EC%B0%A8-JVM%EC%9D%80-%EB%AC%B4%EC%97%87%EC%9D%B4%EB%A9%B0-%EC%9E%90%EB%B0%94-%EC%BD%94%EB%93%9C%EB%8A%94-%EC%96%B4%EB%96%BB%EA%B2%8C-%EC%8B%A4%ED%96%89%ED%95%98%EB%8A%94-%EA%B2%83%EC%9D%B8%EA%B0%80)

JVM은 자바를 실행하기 위한 가상 기계(컴퓨터) 즉, OS에 종속받지 않고 CPU가 Java를 인식, 실행할 수 있게 하는 가상 컴퓨터

참조 https://www.itworld.co.kr/news/110837

22.07.18

코딩테스트에서 오류나는 이유
1.조건을 못 맞추거나
2.형변환시 오류발생

Quiz20
해쉬함수 사용방법 참고

Quiz24 ( 정수 내림차순으로 변환 )
1. int count = (int)(Math.log10(n)+1); // 자리수 구하기
2. char 형식은 크기비교가 된다.!!
3. Long.parseLong(String.valueOf(sort)); // 롱으로 형변환
4.char[] sort = String.valueOf(n).toCharArray(); // 스프링형식 char 배열로 변환
5. 순서 및 변환에 대해 많이 검색.
6. 행렬 > String > 해당 형식으로 변환 .
7. 제곱근
https://coding-factory.tistory.com/532
제곱
https://coding-factory.tistory.com/531

자바 int배열 string으로 변환
https://zetawiki.com/wiki/%EC%9E%90%EB%B0%94_int_%EB%B0%B0%EC%97%B4%EC%9D%84_String%EC%9C%BC%EB%A1%9C_%EB%B3%80%ED%99%98

정수 내림차순으로 배열
https://gogoma.tistory.com/36
https://velog.io/@stay_o2o/%EC%A0%95%EC%88%98-%EB%82%B4%EB%A6%BC%EC%B0%A8%EC%88%9C%EC%9C%BC%EB%A1%9C-%EB%B0%B0%EC%B9%98%ED%95%98%EA%B8%B0

int vs integer 의 차이!!
https://velog.io/@hadoyaji/int%EC%99%80-Integer%EB%8A%94-%EB%AC%B4%EC%97%87%EC%9D%B4-%EB%8B%A4%EB%A5%B8%EA%B0%80


22.07.19

  1. 객체젼환 int > long
    Integer y = 1;
    long x = y.longValue();
    한 객체를 변환 >>
    String str = String.valueOf(n); // 문자로 변환

  2. Char
    toCharArray()
    문자열을 char형 배열로 바꿔준다. 반환되는 배열의 길이는 문자열의 길이와 같다.

3.parse
https://www.delftstack.com/ko/howto/java/char-array-to-int-java/

  1. int > char 배열 변환 예시

    String raw = "1233983543587325318";
    int[] num = new int[raw.length()];
    for (int i = 0; i < raw.length(); i++){
    num[i] = raw.charAt(i) - '0';
    }

for (int i : num) {
    System.out.println(i);
}
  1. 각자리 숫자 들고오기
    while(true){
    answer+=n%10;
    if(n<10)
    break;

           n=n/10;
       }

Quiz 25
제곱, 제곱근
https://doompok.tistory.com/7

Quiz 26
행은 바뀌면 안된다
https://school.programmers.co.kr/questions/14664


22.07.20

  • 추상화(abstract) 쓰는 이유 : class를 못만든다!
    휴먼에러 방지

  • 기획은 별도로 이루어지는 것이다. 요구사항들은 정해져서 온다.
    코드를 짜기위한 데이터를 생각하자.

  • 플로우차트로 생각, 복습을 많이해라


22.07.21

  1. 각 자리수 더하기 ( 좋은 코드)
    while(true){
    sum+=x%10;
    if(x<10)
    break;
    x=x/10;
    }
  1. phaseint >> 문자숫자를를 숫자로, 숫자만포함해야함
    Byte.parseByte();
    Short.parseShort();
    Integer.parseInt();
    Long.parseLong();
    Float.parseFloat();
    Double.parseDouble();
    https://colossus-java-practice.tistory.com/32

    숫자를 문자로 Interger.toString();
    https://hianna.tistory.com/524

  1. 글자 char array로 만들기
    String a = "abc";
    char [] sorts = a.toCharArray();
    char[] sort = String.valueOf(n).toCharArray(); // int n > 스프링형식 > char 배열로 변환

  2. 리스트 만들어서 풀어보기 (가장작은수제거하기 26번)
    ArrayList list = new ArrayList();
    Integer minimum = Collections.min(list);
    Integer minimum = Collections.min(list); // list중 가장 작은 수 출력함! import java.util.Collections; 해야함..

**** list에 array 집어넣을때!!
answer[i] = list.get(i);

int many = strList.size(); / 리스트 길이 구하기

https://hianna.tistory.com/551
https://coding-factory.tistory.com/551
https://mainia.tistory.com/2323

  1. int > char 배열 변환 예시

    String raw = "1233983543587325318";
    int[] num = new int[raw.length()];
    for (int i = 0; i < raw.length(); i++){
    num[i] = raw.charAt(i) - '0';
    }

for (int i : num) {
    System.out.println(i);
}
  1. Quiz20
    해시함수 사용방법 참고
    https://coding-factory.tistory.com/556
  1. string > int 배열 변환 예시

    String raw = "1233983543587325318";
    int[] num = new int[raw.length()];
    for (int i = 0; i < raw.length(); i++){
    num[i] = raw.charAt(i) - '0';
    }

for (int i : num) {
    System.out.println(i);
}

8 . BREAK 와 Continue 구분하기
https://hymndev.tistory.com/20

9.Quiz16
== 과 equal은 다르다 !!
참조 https://coding-factory.tistory.com/536
기본 타입의 int형, char형등은 Call by Value 형태로 기본적으로 대상에 주소값을 가지지 않는 형태로 사용됩니다.

그래서 char == char 사용해도 괜찬
String은 equal 쓰는게 맞다!!

큰따옴표(" ")는 문자열(String)을 감싸는 기호이고
작은따옴표(' ')는 문자(Character)를 감싸는 기호이다.

큰따옴표(" ") 사이에는 문자 여러개를 입력하고
작은따옴표(' ') 사이에는 문자 하나만 입력할 수 있다.

  1. char arr를 int arr 넣기
    answer[i] = sort[i]- '0'; /// int 속성 = char 속성, 아스키코드

  2. String.join("",arraylist); // "넣고싶은거" 만약 ""을넣으면 행렬 사이에 가 추가
    Q21 참고

내맘대로 정렬하기와 자바강의에 보면 n 번째문자 정렬
https://school.programmers.co.kr/learn/courses/30/lessons/12915


22.07.22

학습자료 다보기, 팀과제는 틈틈히하기, 일부를 가져와 동작 이해 방식을 이해하기.

서버사이드 = 백엔드

WIL 작성은
객체지향 프로그래밍이란???
JVM이란???


List newList = new ArrayList<>();
newList.add("웹개발의 봄 Spring");
newList.add("프론트엔드의 꽃 React");
System.out.println(newList);
System.out.println(newList.get(0));
System.out.println(newList.get(1));
newList.remove(0);
System.out.println(newList);

정보를 묶을 때 List 라는 녀석을 사용합니다. 세 가지를 기억하시면 돼요.
1. 순서가 중요한 녀석이에요!
2. 같은 자료형만 넣을 수 있어요
3. 넣을 때는 add, 조회할 때는 get, 제거할 때는 remove를 사용합니다.


private한 변수를 바꾸고 싶을때
// setter의 형태
public void setTitle(String title ){
this.title = title;
}


private한 변수를 가져오고 싶을 때
//Getter
public String getTitle( ) {
return this.title;

}

스프링봄 강의 1-11 (Controller)

  • Rest 란 ?
    • 서버의 응답이 JSON 형식임을 나타냅니다.
    • HTML, CSS 등을 주고받을 때는 Rest 를 붙이지 않습니다.

스프링봄 강의 1-12 gradle 배포하거나 라이브러리에서 들고 올때 사용한다.~

maven repository에서 다른사람의 코드를 복사
build.gradle에 dependencies { }에 붙여넣어준다.

찾아보면 좋을 키워드
Spring Boot vs Node.js
https://jaehoney.tistory.com/167
Gradle vs Maven
https://gradle.org/maven-vs-gradle/
Rest API


스프링봄 2-1강

RDBMKS = 관계형 데이터 베이스
Spring은 java, Datbase는 SQL로 작동한다.
JPA는 서버와 DB사이의 번역기!


스프링봄 2-3강

데이터 베이스 = 고도화된 엑셀
엑셀 시트 하나당 = 테이블 하나!
엑셀 행 하나당 = 데이터 !

SQL문법 정리! (1. 생성)
CREATE TABLE IF NOT EXISTS courses (
id bigint(5) NOT NULL AUTO_INCREMENT,
title varchar(255) NOT NULL,
tutor varchar(255) NOT NULL,
PRIMARY KEY (id)
);
///////////
bigint = java의 int, varchar = string ,
PRIMARY KEY (id) 아이디를 구분할수있는 녀석으로 삼겠다.
AUTO_INCREMENT, id를 자동으로 증가시켜줘

SQL문법 정리! (2.. 데이터 삽입)
INSERT INTO courses (title, tutor) VALUES
    ('웹개발의 봄, Spring', '남병관'), ('웹개발 종합반', '이범규');

SQL문법 정리!(3. 데이터 조회_)
SELECT * FROM courses;


스프링봄 2-4강

Domain(Entity)은 Table ! Repository는 SQL과 동일한 역할이다!

Domain과 Repository 저장위치 확인하기.
인터페이스는 메소드만 잔뜩 모여져 있는 곳이다.
JPA도 여기에만 있을 수 있다.(Repository)



스프링봄 2강 -5

spring.jpa.show-sql=true >> 의미는 스프링이 jpa로 작동할때 sql을 보여달라.

*)SQL에서 작업하는 것은 repository를 적는다.
자바언어로 값을 입력하고 데이터베이스 입력된 값을 확인할 수 있다ㅣ.


스프링봄 2강 -6

extends 상속~

@ 붙은걸 어노테이션(annotation)이라고함.. Spring한테 얘는 이러한 역할이야라고 알려줌.

abstract 추상 == 직접 사용 못하고 상속(extends)으로만 사용가능하다!!

*)Timestamped를 사용하는방법
Class에 상속시킨다.

@EnableJpaAuditing을 application.java에 기입한다.(생성일자 ,수정일자가 나온다.)


스프링봄 2강 7

CRUD는 대부분의 컴퓨터 소프트웨어가 가지는 기본적인 데이터 처리 기능인
Create(생성), Read(읽기), Update(갱신), Delete(삭제)를 묶어서 일컫는 말

Repository란 ->Entity에 의해 생성된 DB에 접근하는 메서드(ex) findAll()) 들을 사용하기 위한 인터페이스이다. 위에서 엔티티를 선언함으로써 데이터베이스 구조를 만들었다면, 여기에 어떤 값을 넣거나, 넣어진 값을 조회하는 등의 CRUD(Create, Read, Update, Delete)를 해야 쓸모가 있는데, 이것을 어떻게 할 것인지 정의해주는 계층이라고 생각하면 된다.

ID값을 불러올때 하는 방법!!! ->Repo에서 들고오고 id값이 없다면 orElseThrow를 실행
Course course = repository.findById(1L).orElseThrow(
() -> new IllegalArgumentException("해당 아이디가 존재하지 않습니다.")
() -> new NullPointerException("아이디가 존재하지 않습니다.")
);


Service 생성을 해보자~
패치키 service 폴더 생성하고
도매인 class에 추가한다
public void update(Course course) {
this.title = course.title;
this.tutor = course.tutor;
}
이후 service 패키지에서 final 및 생성자를 만들고
그후 db를 바꿀 Trans~~를 입력!!

personRepository.deleteAll();//삭제하기

찾아보면 좋을 키워드
RDBMS vs NoSQL
-https://universitytomorrow.com/26
JPA
Repository


스피링강의 봄 2-8

Lombok : 코드를 절약
ex) getter를 @Getter 한단어로 축약

DTO(Data Transfer Object) : 정보를 업데이트할때 데이터베이스에 사용되는 클래스를 사용하지 않고 새로운 클래스를 통해 업데이트
즉! 정보 관련을 물고다니는 녀석!

💡 생성할 패키지 종류

  • contorller
  • entity
  • repository
  • service
  • dto

스프링강의 봄 2-9

REST
GET조회 POST입력 PUT수정 DELETE삭제 4가지
주의사항!!
주소에 들어가는 명사들은 복수를 사용,
주소에 동사는 가급적 사용하지 않는다.


스프링강의 봄 2-10

POST, PUT DELETE

Post 작성시 @RequestBody를 넣어줘야 DTO에 들어간다
Put,Delete 작성시 @PathVariable를 메소드 작성시 넣어줘야 {id}값이 들어온다.

1.POST
SPRING에서 POST 방식은 엄격하게 정해져 있다.
2.PUT


숙제만들기
Domain 폴더안에 Class생성할 java 클래스, Repo를 만든다.

생성할때 아티팩트 중요!!!!!!!
입력및 repo에 저장
@Bean
public CommandLineRunner demo(PersonRepository repository) {
return (args) -> {

        Person person1 = new Person("손", 100);
        repository.save(person1);
        List<Person> personList = repository.findAll();
        for(int i =0; i<personList.size();i++){
            Person man = personList.get(i);
            System.out.println(man.getName());
            System.out.println(man.getAge());
        }


    };
Domain에 타임스탬프 생성함.

// 데이터 하나 조회하기
            Person person = repository.findById(1L).orElseThrow(
                    () -> new IllegalArgumentException("해당 아이디가 존재하지 않습니다.")  // 없으면 해당 내용을 출력하도록 함!
            );

업데이트 하기 service를 통해서

@Getter
@Setter
@RequiredArgsConstructor // final 사용할때 반드시 넣어주기
@NoArgsConstructor // 기본생성자 대신생성
@RestController // json형식으로 표시해줘


22.07.24

스프링봄 강의 3-5

멤버 변수들에는 private , 그리고 final을 붙이자.

@GetMapping("/api/memos")
public List readMemo(@RequestBody MemoRequestDto requestDto){
return memoRepository.findAllByOrderByModifiedAtDesc();

!!!중요사항!!!
@PathVariable Long id, @RequestBody MemoRequestDto memoRequestDto
PathVariable : ID가 지나갈수 있게 해줘!!
RequestBody ; 바디안에 있는 내용을 꼭 넣어줘!!


스프링봄 강의 3-9

JQUERY 임포트시 헤드태크사이에!!


스프링봄 강의 3-14

Timestamped @getter 사용해서 조회시간 가져올수 잇게
application 클래스에 @EnableJpaAuditing 를 넣어야지 수정시간 반영이 된다.

ALT+J 다중선택!!

스프링봄 강의 숙제
***24시간 이내 최신으로 불러와라
1. JPA 불러오는 방식을 수정해야하고
2. controller에서 객체를 만들어 넣어준다.
https://ssong915.tistory.com/33

profile
HelloWorld에서 RealWorld로

0개의 댓글