목록전체 글 (37)
쉽지않은 블로그
좋은 객체지향을 설계할수 있는 5가지 원칙이라고 유명한 SOLID 원칙이라고 있다. 처음에는 이해하기 어려웠으나 스프링을 공부하면서 서서히 이 의미를 알거같다. 앞으로 이 5가지 원칙을 기준으로 내가 객체지향의 깊은 뜻을 이해하며 코딩을 하고 있는지 돌이켜보면 좋을거같다 1.SRP (Single Responsibiliy Principle) 단일 책임 원칙 "하나의 클래스는 하나의 책임(일)을 맡아야 한다"는 원칙이다. 객체가 만약 여러 책임을 가지고 있다면 다른 객체와 결합력이 높아질수 있다 만약 변형이 일어나도 최소한의 변경이 일어나게끔 설계해야 된다. 2.OCP (Open-Closed Principle) 개방-폐쇄 원칙 "확장에 대해 열려 있어야 하고 , 수정에 대해서는 닫혀 있어야 한다." 말 자체..

Object Class object class는 모든 클래스들의 최고 조상이다 그래서 다음과 같이 참조형 타입의 변수라면 어떤 것이든지 간에 객체지향의 다형성에 의해서 참조형 변수로 보관할수 있다 이런 특성을 이용하여 어느클래스의 타입이든 Object 배열에 보관하는 것이 가능하다. (역은 성립하지 않는다) Object a = new A(); //가능 A b = (A) new Object(); // java.lang.ClassCastException : class java.lang.Object cannot be cast to class A Method Object 의 메서드를 보면 다음과 같은 것들이 있다 하지만 여기서 자주 보게 되는 것은 다음 세 가지 메서드들이다. public String toStr..

이 글은 네이버 지도 등과 같은 동적 웹페이지를 크롤링할 때 저와 같은 시간을 낭비하지 않길 바라며 적습니다.... 들어가며 동적으로 움직여야 되는 다른 사이트들도 크롤링을 해본 경험이 있었는데도 불구하고 네이버 지도의 크롤링 난이도는 꽤 높았다고 생각이 든다. 네이버 지도를 크롤링한 이유는 여러 카페와 맛집들의 리스트를 받기 위함이었다 크롤링을 최후에 수단으로 두고 여러 방법들을 찾아보았지만 예전의 방법들은 다 지금 사용할 수 없게 된 걸 확인하고 파이 참을 켰다.. 😂😂 이전에 존재했던(?) 맛집 리스트를 얻는 방법 중 몇 가지를 소개하자면 (나는 이용하지 않아 봐서 정확히는 모른다) 1. 작년까지 제공되었던 NAVER_PLACE API 있었던 것 같다 naver devleops , naver 클라우..
전 페이지에서 IoC컨테이너를 이용하면 손쉽게 다음 코드와 같이 손쉽게 DI와 IOC 기능을 구현할 수 있다고 했었다. public class A { @Autowired B b; public doSomeThing() { b.getDate(); .... .... } } //*************************************** @Component public class B { public int getData() { // TODO Auto-generated method stub return 10; } } IoC 컨테이너를 사용하여 DI (Dependency Injection 은 @Autowired 어노테이션을 이용하여 쉽게 처리해주었고 IOC (Inversion of Control) 제어 ..

전 페이지에서 결합력이 무엇인가를 알아보았다. 머리가 아프니 그냥 결합력을 아예 신경 쓰지 되지 않고 코딩을 하면 되지 않냐고 생각할 수 있는데 Spring-MVC의 구조를 예시로 보면 스프링을 이용하여 web application을 만든다고 하면 다음과 같은 구조로 나오게 될 것이다 1. 사용자(Client Application )는 사용자를 나타낸다 2.Controller 는 사용자가 요청을 보낼때 제일 먼저 작동하는 함수 3.Service는 비즈니스로직을 처리하는 함수 4.Repository는 DB와 상호작용을 하는 함수 이렇게 역할을 분리 시키는 이유는 스프링에서 지향하는 SRP( Single Responsibility Principle) 관리를 용이하게 하기 위해 하나의 함수는 하나의 일에만 집..
자바의 객체지향 프로그래밍 관점에서 보게 되면 1) 클래스가 다른 클래스를 사용하거나 2) 클래스가 다른 클래스를 상속하거나 등 어떤 클래스 객체가 하는 일이 다른 객체에 영향을 받게 되면 "결합력이 있다"고 표현한다 일단 다른 클래스를 사용하면 결합력이 있다고 하는데 어떻게 사용하냐에 따라서 강한 결합력과 느슨한 결합력으로 정의될 수 있다 다음 예시를 보자 예시에서는 가정이 있다 "A 인스턴스 안에서 B객체를 사용해야 되는 상황" (spring mvc 관점에서 A를 controller B를 service라고 생각하여도 좋다) class A { private b; public A(){ b = new B(); } public doSomeThing(){ int val = b.getData()..... } }..
자바에서 String 은 C++ 에서 다루던것과 많이 다른느낌이여서 처음 사용할때 많은 혼란을 주었다. str[3] 이게 왜 안됨??? JAVA 의 String 에 대해서 정리하고자 이 글을 쓴다. String 클래스는 java.base jar 파일의 java.lang에 담겨있다. public final class String implements java.io.Serializable, Comparable, CharSequence { /** * The value is used for character storage. * * @implNote This field is trusted by the VM, and is a subject to * constant folding if String instance is..

래퍼 클래스 : 기본형 타입을 참조형 타입(객체)으로 사용하기 위해 만든 클래스 기본형 타입 (byte , short , int , long , float , double , char , boolean) 기본형 타입인 int 를 굳이? 래퍼 클래스를 이용하여 객체화시키는 이유는? 아래는 ArrayList 클래스의 일부의 소스코드이다. public class ArrayList extends AbstractList implements List, RandomAccess, Cloneable, java.io.Serializable { private static final long serialVersionUID = 8683452581122892189L; /** * Default initial capacity. */..