profile
꼼꼼하게

자바의 정석 스터디(2) - 객체지향

절차지향 프로그램 순차적으로 실행되는 프로그램, 소스코드가 순차적으로 연결 하나라도 제대로 작동하지 않으면 와르르 무너짐 객체지향 프로그램 절차지향의 단점을 보완, 세상의 사물을 하나의 객체로 만들어 상호간의 소통하면서 프로그래밍이 진행 대가리(기존 상식을) 깨는 시간 클래스는 타입이다. 내가 만들어낸 클래스로 누군가가 쓰길 원하는 것이다. 우리는 게시판질을 할꺼다 글목록 > 글 글은 오브젝트(객체)일까? 글을 읽기 위해서 db에서 데이터를 가져와야 한다. 즉, 객체 = 데이터이다. CRUD 기능과 데이터를 넣은 것을 객체라고 한다. 그리고 이 객체는 남들이 쓸 수 있게 만들어주는 타입과 맞닿아 있다. a 도메인 관점에서 찢어지는게 msa가 아니라 기술적 관점에서 찢어야 한다. 절차지향과 객체지향의 차이점이 있을까? 아니다 객체지향도 컨트롤러의 요청을 받는데? 이게 다른걸까? 아니 있다. 객체지향은 그

2023년 8월 19일
·
0개의 댓글
·

자바의 정석 스터디

클래스 변수는 클래스를 인스턴스화 하지 않더라도 어디서든 접근할 수 있는 변수이다. static 클래스 변수를 쓰는 이유 고정값이 있고 어디서든 사용해야 할 때 ex) 숫자의 시작 - 0 ex) 게시판의 첫 번째 글의 숫자는 1이다 큰 타입으로 자동 변환 int => long으로 자동으로 변환된다. 강제타입 변환 언제 쓰이나? : 똑같은 데이터지만 형태를 바꿔서 보고싶을 때 게시판의 특정 아티클을 다른 게시판으로 바꾸고 싶을 때 목록으로 볼때와 detail한 뷰로 볼 때 vo로 생각해봤을 때 글제목만 있는 titleVO와 detatilVO에는 글제목, 내용, 작성일자 등 다양한 정보가 있을 때 detailVO를 titleVO로 캐스팅하여 불필요한 정보를 제외하고 리스트업할 수 있다

2023년 8월 12일
·
0개의 댓글
·
post-thumbnail

[JAVA] 오라클 DB와 연결하기

안녕하세요, 오늘은 오라클 DB와 자바를 이클립스에서 연결해보겠습니다. 먼저 오라클이 설치되어 있어야 합니다. 보통은 JDK 1.8 을 사용하실 텐데요 이러면 ojdbc8.jar 파일이 필요합니다. ojdbc8.jar 파일은 C드라이브 > 오라클 폴더 > product > jdbc > lib 에 있습니다. (대충 이런 경로입니다. 저랑 다르실 수도 있습니다.) 패키지를 우측 클릭해줍니다. Build Path > Configure Build Path 를 눌러줍니다. ![](https://velog.velcdn.com/images/qkrwnsduq/post/1f01549f-a669-4eef-a726-82d1e39b7775/imag

2023년 2월 21일
·
0개의 댓글
·

[JAVA] 입력받은 문자열이 정수로 이루어져 있는지 확인

입력받은 문자열에 정수만 포함되어있는지 확인하는 방법이 여러가지이지만 이번에 알게된 내용은 새로워서 글을 쓰게 되었다. 코드는 다음과 같다. String.chars().allMatch(Charcter::isDigit) 먼저 chars() 메소드는 공식문서에 다음과 같이 적혀있다. > default IntStream chars() Returns a stream of int zero-extending the char values from this sequence. Any char which maps to a surrogate code point is passed through uninterpreted. If the sequence is mutated while the stream is being read, the result is undefined 음 stream 형태로 char 값을 반환해주는거구나 그렇다면 문자열에 문자를 순차적으로 확인할 수 있겠다. 다음은 allMa

2023년 2월 5일
·
0개의 댓글
·
post-thumbnail

[JAVA] 자바 Streem으로 파일 복사

코딩 공부를 할 때, 내가 배우는 부분을 어떻게 활용할지 고민하면 좋다고 합니다. 오늘 공부한 자바로 파일을 복사하는 방법은 어디다가 쓸 수 있을지 생각해봤습니다. 활용 방법 -> 게시글에 파일 첨부할 때 * 전체 코드 * dataArr 는 1kb 짜리 빨대입니다. 자 이제 이 빨대를 활용해보겠습니다. FileInputStream 은 빨대를 꽂을 준비하는 것입니다. FileOutputStream 은 input으로 가져온 내용을 다른 곳으로 빨대를 통해 흘려보내는 것입니다. fist.read는 빨대를 통해 -1 이 아니라면 1kb의 내용을 흡입합니다. 이것을 fost.write 를 통해 지금 빨대에 있는 1kb의 내용을 파일 붙여놓기 하고싶은 공간으로 흘려보냅니다

2023년 2월 1일
·
0개의 댓글
·

[JAVA] 나만의 예외처리 클래스 만들기

1. 나만의 특별한 예외처리 클래스 만들기 가게에서 손님한테 과자주문을 받는다고 할 때 가지고 있는 수량보다 주문 수량이 많으면 주문을 못받는 예외처리를 나만의 예외처리 클래스를 구현하여 만들어보자 Product 클래스에는 order 메소드가 구현되어 있다. try catch를 통해서 잔고보다 많은 주문량이 발생되면 특정 물품의 잔고가 부족하다는 에러메시지가 발생되게 하고 싶다. 나만의 예외처리 클래스인 JangolackException 클래스이다. 예외처리 클래스를 만드는 방법은 Exception 클래스를 상속하는 것이다. 이곳에서 기본생성자를 활용한 JangolackException 예외처리 방법과 오버로딩을 통해 파라미터가 있는 JangolackException 예외처리 방법이 있다. </b

2023년 1월 26일
·
0개의 댓글
·
post-thumbnail

테스트만을 위한 메소드의 필요성, 가변 불변 객체

TDD 방법론을 지향한다고 해서 테스트만을 위한 생성자와 메소드를 구현해야 하나? 생성자의 다양성 => aip 사용자, 클라이언트에게 긍정적인 사용성 제공 but 메소드의 다양성 => 객체의 복잡도와 중복 코드를 증가시킴 => 단일 책임의 원칙 위배 가능성 증가 _그렇다고 생성자가 다 할려고 하지 말자 생성자는 필드에 데이터를 받는 역할만 해야 한다. 생성자가 할 일이 많다면 팩터리 메소드를 활용하자._ 잠깐 팩토리 메소드란..? : 직접적으로 생성자를 통해 객체를 생성하는 것이 아닌 메서드를 통해서 객체를 생성하는 것을 정적 팩토리 메서드라고 한다. "생성자 대신 정적 팩토리 메서드를 고려하라" -이펙티브 자바- 굳이 생성자가 있는데 팩토리 메소드를 사용하는 이유는 뭘까? 이름을 가지고 있어 메소드 이름에 객체의 생성 목적을 담을 수 있다. 메소드이기에 하위 자료형 객체를 반납

2023년 1월 22일
·
0개의 댓글
·

추상화

미완성 메소드가 있는 클래스는 반드시 미완성 클래스로 만들어야 하는 이유 미완성 메소드는 추상 메소드(abstract method)라고 하는데 이를 만드는 이유는 자식클래스에서 메소드를 무조건 오버라이딩(재정의)하기 때문에 부모 클래스에서는 메소드를 정의할 필요가 없으므로 미완성 메소드로 만들어 버린다. => 이러한 미완성 메소드가 있는 클래스는 미완성 클래스로 만들어야 한다. 일반적으로 부모클래스를 미완성 클래스(abstract class)로 만든다. 미완성 클래스(== 추상 클래스, abstract class)를 사용하여 객체(인스턴스)를 생성할 수 없다. => 미완성 클래스 즉, 추상 클래스는 언제 사용하나요? 먼저 추상 메소드에 대해 생각해보자 우리는 자바의 여러 추상적인 메소드 예컨데 를 사용하면서 내부에서 어떤 방식으로 문자를 대문자로 바꿔주는지 생각하지

2023년 1월 20일
·
0개의 댓글
·

클래스와 인스턴스

은 이다. 을 사용해서 만든 은 이다. 붕어빵 틀 자체만으로는 상태가 없다. 오로지 틀을 가지고 빵을 만들었을 때 실체화되는 것이다. 인스턴스인 붕어빵은 상태를 가지며 베어물(메서드)거나 찢거나(메서드)를 통해 붕어빵의 상태(팥이 줄줄 새는)가 바뀐다. 우리가 붕어빵을 한개씩 만들 때마다 붕어빵 틀이 찍어낸 붕어빵의 개수를 바꾼다고 해보자. 붕어빵 틀이 찍어낸 개수는 이고 이는 굳이 붕어빵을 만들지 않아도 가 공유하는 정보로 호출이 가능하다.(ex 0) 이 개념은 객체지향의 캡슐화와 관련이 있다. 인스턴스 메소드와 인스턴스 필드를 private으로 하고 get/set으로만 수정이 가능하게 하면서 클래스 메소드와 필드는 public으로 열어놓는 것이다. private construcor 유틸리티 클래스는 대게 static으로만 이루어져 있는데 이는 생성자를 막는다. 생성자 =>

2023년 1월 20일
·
0개의 댓글
·