본문 바로가기

전체 글

(30)
객체지향프로그래밍 (OOP) - 상속 상속(Inheritance) - "역 계 문 강 목 과 속 종" 정의 상속이란 객체들의 관계를 구축하는 방법으로, 어느 한 객체가 다른 한 객체의 속성과 행위를 물려받아 사용하거나 재정의하는 것이다. 예를 들어, 과학 시간에 배웠던 생물 분류에서 알 수 있듯, 하위 분류는 상위 분류의 특성을 포함하고 그 안에서 다른 특성들이 나타난다(조류의 특징은 날개가 있다는 공통점). 그런데, 조류의 날개는 다 똑같지는 않다! 종마다 모두 다른 날개의 모양과 역할을 가지고 있다. 조류의 종마다 날개가 다르듯, 상속하는 객체의 일부 속성을 재정의하여 구현하는 것이 상속이 객체들 간의 관계를 정의하는 방법이다. 왜? 코드 세계에서 공통점이란, 중복을 의미한다. 다시 한번 말하자면, 공통점(중복)은 따로 빼서 한곳에서 관..
객체지향프로그래밍 (OOP) - 캡슐화 캡슐화(Encapsulation) - "서먹한 관계를 선사시켜드립니다~" 정의 캡슐화란 무엇인가? 또 딱딱하게 정의해보자면, 객체의 속성과 행위를 하나로 묶어 실제 구현 내용을 은닉하는 것이다. 또 다시 말하자면, 추상화로 지정한 범위를 울타리로 감싸주는 것이라고도 할 수 있다. 왜? 다른 사람이 내 전화번호, 키, 몸무게, 심지어 성별까지 바꿀 수 있으면 어떨까? 기분이 나쁜 것은 기본이고, 내 정체성에 문제가 생기고, 마치 드라마 의 주인공처럼 들쑥날쑥한 삶이 매우 피곤할 것이다(물론 주인공은 연애도 커리어도 성공하지만).객체도 마찬가지다. 다른 객체가 마음대로 자신을 조종하면, 반드시 문제가 발생하기 마련이다. 자! 이제 조금 더 자세히 캡슐화를 구현해야 하는 이유를 살펴보자. 캡슐화를 구현한다면,..
[MySql] [Oracle] 정렬 시 Null 위치 컨트롤하기 우선 순위 기능 넣어주세요~ 낮을수록 위에 오고, 없는 데이터는 그 아래에 뿌려주세요~ 위 요구 사항을 해결하기 위해서 priority 컬럼을 만들어주었다. -- Null을 허용함 ALTER TABLE board ADD priority INT​ 그 후, 그냥 ASC 정렬을 하면 우선순위가 낮은대로 출력될 줄 알았다. SELECT * FROM board ORDER BY priority ASC 하지만 출력결과는 아래와 같았다.. DATA PRIORITY {~~~~~} {~~~~~} {~~~~~} 1 {~~~~~} 3 ASC 정렬 시 null이 우선되기 때문이었다. 문제 해결 TRUE는 1이고 FALSE는 0이다. 누가 더 큰가? TRUE가 더 크다. 우선순위가 있는 녀석들과 없는 녀석들의 차이는 우선순위의 ..
객체지향프로그래밍 (OOP) - 추상화 추상화(Abstraction) - "우리 비슷한 점이 많네요~ 일로 오세요~" 정의 추상화가 무엇인지 딱딱하게 정의해보자면, 객체들의 공통 속성과 행위를 추출하는 것이다. 처음 프로그래밍을 접하는 사람은 무슨 소리인지 잘 모를수도 있을 것 같다. 다시 쉽게 말해보면, 공통점을 찾아 이름짓기이다. 왜? 귀가 길고, 초식 동물이면서, 귀엽고, 갈색 털이고, 콧구멍이 큰 동물과 귀가 길고, 초식 동물이면서, 귀엽고, 흰색 털이고, 콧구멍이 작은 동물 등이 있다. 이 친구들을 항상 이렇게 길게 불러야 할까? 털과 콧구멍 말고도 차이점은 많겠지만, 같은 점이 더 많으니 하나의 이름으로 묶어주면 더 편할 것이다. 자, 이제 "귀가 길고 어쩌고 저쩌고"라 부를 필요 없이 토끼라고만 부르면 된다! 이렇게 되면 코드 상..
[ERROR] unable to find valid certification path to requested target https://~~~.co.kr/~~ API 호출해서 체크하고 응답값에 따라 구분해주세요~ 외부 API 호출해서 처리할 이슈가 생겼다. 원래는 브라우저에서 처리하려고 했으나, 외부업체에서 "CORS 정책을 풀어줄 수 없다"하여 백엔드에서 호출하고 프론트에 던져주는 흐름으로 자바로 URLConnection을 만들어서 요청하는 도중, 생전 처음 보는 오류를 보았다. sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 인증서 ..
[DataGrip] 콘솔에 있는 쿼리문 .sql 파일로 저장하기 [우클릭] > 리팩터링 > 파일 복사... 그 후, 원하는 경로에 원하는 이름.sql 파일을 저장한다.
Spring 프로젝트, 전자정부프레임워크로 마이그레이션 - 아키텍처 규칙 지난 글에서는 마이그레이션을 시작하기에 앞서 전자정부프레임워크 종속성을 포함하는 방법에 대해 알아보았다. 이번에는 전자정부프레임워크로 인정받기 위한 소스변경(?)의 첫 시작을 해보려 한다. 아키텍처 규칙 (Architecture Rule) Controller @Controller와 @RequestMapping을 통해 경로를 작성한다. @GetMappring도 될까..? 추후에 확인해보도록 하겠다 (심사할 때까지 대기 허허..) View 부분과 Model(business logic 및 data) 부분을 Controller를 통해 분리한다. ➡️ 진행하고 있던 프로젝트는 다행히 적용되어 있었다. Service 클래스 상단에 @Service 선언한다. EgovAbstractServiceImpl을 상속한다. 그..
Spring 프로젝트, 전자정부프레임워크로 마이그레이션 - 소개 & Maven 이 글에서는 기존 스프링 프로젝트를 전자정부프레임워크로 마이그레이션하는 방법을 알아보려고 한다. 체리맥주님~ 저희 사용하고 스프링 프로젝트, 전자정부프레임워크 적용해주세요~~ 당황했다. 전자정부프레임워크 소리만 들어봤지 무엇인지는 자세히 몰랐다. "스프링이랑 똑같은 거 아닌가(ㅋㅋ?)"라고 생각했다. 일단, 요청을 알아야 처리를 하기에 요청에서 받은 단서들을 조사하기 시작했다. 전자정부프레임워크(eGov)란 무엇인가? 전자정부 표준프레임워크 사이트를 훑어본 후, 나는 전자정부프레임워크(이하 eGov라 표기)를 개발환경(IDE), 실행환경(소스, 라이브러리), 운영환경(VCS, 서버)등을 제공/정의해놓은 집합체라고 정의했다. eGov를 사용하면 공통 컴포넌트를 통해 빠른 개발이 가능해 보인다. 또한, 다른..