반응형
자바 객체지향의 원리와 이해 - 김종민

 

전에 봤던 Good Java 보다 한 단계 수준 높은 책이다. 왜냐하면 Good Java에서는 자세한 설명과 이미지로 이해를 쉽게 하여 입문 개발자를 위한 책이었다.

이책의 제목에서 처럼 자바 입문이 아닌 스프링 입문을 위한 책이다. (스프링 입문을 위한 자바 객체지향의 원리와 이해)

그럼에도 불구하고 객체지향의 원리와 구조적 방법과의 차이 등을 자세하게 설명한다.

특히 객체지향 프로그래밍의 특징중 하나인 추상화를 설명할때 일반적으로 추상하면 떠오르는 피카소와 이집트의 벽화를 예로 들면서 일반적인 개념에서 프로그래밍적인 개념으로의 이해를 돕고 있다.

 

뒷 부분으로 가면서 스프링을 이용한 실질 적인 프로그래밍 패턴과 코드 설명 등이 자세하게 나온다.

뒷부분의 스프링 관련 내용은 많은 내용을 담고 있어서 모두 이해하지는 못했다.

 

 

 

OOP의 4대 특성 = 캡, 상추다.

 

캡술화 - Encapsulation : 정보 은닉(information hiding)

상속 - inheritance : 재사용

추상화 - Abstraction : 모델링

다형성 - Polymorphism : 사용 편의

 

 

객체 지향 설계 5대 원칙 = SOLID

1. SRP (Single Responsibility Principle) : 단일 책임 원칙

   ==> 어떤 클래스를 변경해야 하는 이유는 오직 하나뿐이어야 한다 - 로버트 C. 마틴

 

2. OCP (Open Closed Principle): 개발 폐쇠 원칙

   ==> 소프트웨어 엔티티(클래스, 모듈, 함수 등)는 확장에 대해서는 열려 있어야 하지만 변경에 대해서는 닫혀 있어야 한다 - 로버트 C. 마틴  -> 다른말로: 자신의 확장에는 열려 있고, 주변의 변화에 대해서는 닫혀 있어야 한다.

 

3. LSP ( Liskov Subsitution Principle) : 리스코프 치환 원칙

  ==> 서브 타입은 언제나 자신의 기반 타입으로 교체할 수 있어야 한다. - 로버트 C. 마틴

  --> 다른말로: 하위 클래스 is a kind of 상위 클래스 - 하위 분류는 상위 분류의 한 종류다.

                    구현 클래스 is able to 인터페이스 - 구현 분류는 인터페이스할 수 있어야 한다.

 

4. ISP (Interface Segregation Principle): 인터페이스 분리 원칙

  ==> 클라이언트는 자신이 사용하지 않는 메서드에 의존 관계를 맺으면 안된다 - 로버트 C. 마틴

        다른말로 : 단일 책임원칙(SRP)과 인터페이스 분리원칙(ISP)은 같은 문제에 대한 두 가지 다른 해결책이라고 볼수 있음

        한 남자에게 많은 역할 책임을 주지말고 남자를 역할별로 분리하거나, 역할별로 인터페이스를 만들어서 해결 

 

5. DIP (Dependency Inversion Principle): 의존 역전 원칙

  ==> 고차원 모듈은 저차원 모듈에 의존하면 안된다. 이 두 모듈 모두 다른 추상화된 것에 의존해야 한다.

  ==> 추상화된 것은 구체적인 것에의존하면 안 된다 구체적인 것이 추상화된 것에 의존해야 한다.

  ==> 자주 변경되는 구체(Concrete) 클래스에 의존하지 마라

  --> 다른말로 : 자신보다 변하기 쉬운 것에 의존하지 마라

 

 

06장 스프링이 사랑한 디자인 패턴

스프링 : 자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크

 

디자인 패턴은 객체 지향의 특성 중 상속(extends), 인터페이스(interface/implements), 합성(객체를 속성으로 사용)을 이용한다.

 

어댑터 패턴(Adapter Pattern)

   데이터베이스 시스템을 공통의 인터페이스인 ODBC 또는 JDBC를 이용해 조작하는 것과 같은 구조 패턴

 

프록시 패턴(Proxy Pattern)

   다른 누군가를 대신해서 그 역할을 수행하는 대리자/대변인을 만들어 사용하는 구조

 

데코레이터 패턴(Decorator Pattern)

   메서드 호출의 반환값에 변화를 주기 위해 중간에 장식자를 두는 패턴

 

싱글턴 패턴(Singleton Pattern)

   인스턴스를 하나만 만들어 사용하기 위한 패턴

 

템플릿 메서드 패턴(Template Method Pattern)

   상위 클래스의 견본 메서드에서 하위 클래스가 오버라이딩한 메서드를 호출하는 패턴

 

팩터리 메서드 패턴(Factory Method Pattern)

   팩터리 메서드란 객체를 생성해서 반환 하는 메서드

   오버라이드 된 메서드가 객체를 반환하는 패턴

 

전략 패턴(Strategy Pattern)

   클라이언트가 전략을 생성해 전략을 실행할 컨텍스트에 주입하는 패턴

   패턴의 3요소 (전략 객체, 컨텍스트, 클라이언트)

     : 전략 메서드를 가진 전략 객체, 전략 객체를 사용하는 컨텍스트, 전략 객체를 생성해 컨텍스트에 주입하는 클라이언트(제3자)

 

템플릿 콜백 패턴(Template Callback Pattern-견본/회신 패턴)

   전략을 익명 내부 클래스로 구현한 전략 패턴

 

그밖에

  스프링의 MVC의 경우 프론트 컨트롤러 패턴(Front Controller Pattern) 과 MVC 패턴(Model-View-Controller)을 활용하고 있다

 

 

 

 

07 스프링 삼각형과 설정 정보

 

POJO (Plain Old Java Object) 기반의 IoC/DI, AOP, PSA

IoC(Inversion of Control / 제어의 역전), DI(Dependency Injection / 의존성 주입)

 

AOP : Aspect-Oriented Programming : 관점/핵심 지향 프로그래밍

 

PSA : Portable Service Abstraction : 일관성 있는 서비스 추상화

 

 

 

08 자바8 람다와 인터페이스 스팩 변화

 

빅데이터 지원을 위한 멀리코어 병렬분산 프로그래밍을 위한 개선 필요

 

빅데이터 지원을 위한 자바8변경사항

   빅데이터 지원 -> 병렬화 강화 -> 컬렉션 강화  -> 스트림 강화 -> 람다 도입 -> 인터페이스 명세 변경 -> 함수형 인터페이스 도입

 

람다란 코드블럭, 이를 변수로 활용 가능

람다 = 변수에 저장 가능한 로직

기존의 자바에서 로직은 메서드를 통해서만 구현이 가능했는데 이제 람다로 표현할 수도 있게 됨

 

 

반응형
반응형

데이터 분석 방법론 (KDD, SEMMA, CRISP-DM)


데이터 분석 방법론

막상 데이터 분석을 하려고 하면 막막할 때가 많습니다...이럴때 미리 잘 정리된 절차와 방법을 따라서 하나씩 진행한다면 쉽게 접근할 수 있겠지요! 바로~~~, 이러한 방법을 정리해 봅니다. ^^

먼저 분석 방법론이란 무엇일까요? 방법론은 쉽게 말하면 앞에서도 잠깐 얘기한 절차와 방법입니다. 즉 어떤 일을 하기위한 체계적인 절차와 그 처리 방법을 정리한 것이라고 하겠습니다. 그럼 데이터 분석 방법에는 어떤 것들이 있을까요? 분석 방법에는 크게 3가지로, 통계적 방법론, 데이터 마이닝 방법론, 빅데이터 방법론으로 구분할 수 있을 것 같습니다. 통계적 방법론은 전통적인 통계 분석을 위한 방법론을 말합니다. 주로 학술 연구를 중심으로 사용되지요. 그리고 통계적 기법/이론을 발굴/적용하는데 중심이 되어있기 때문에 비즈니스 목적과 요구사항을 파악하고 처리하는데 미흡합니다. 반면 데이터 마이닝 방법론은 비즈니스 활용을 목적으로 만들어진 데이터 분석 방법론입니다. 즉, 분석을 통한 비즈니스 활용을 위한 절차와 방법이 정리되어 있습니다. 때문에 산업 현장에서 많이 쓰입니다. 빅데이터 방법론은 빅데이터의 적용 확대에 따라 비정형 데이터의 활용, 분산/분석 기술의 변화와 이에 따른 필요한 분석방법의 (귀납법중심으로의) 변화에 따른 새로운 분석 방법론입니다.

오늘은 그중에서 데이터 마이닝 방법론에 대해서 이야기해 보겠습니다.
제정법(제가 정리한 방법)에 따르면 데이터 분석을 위해 필요한 단계/절차, 활동내용, 산출물을 정리한 것으로 방법론에 따라 분석을 쭉~ 진행해 나가면 자연 스럽게 분석이 이루어지게 되는 것을 말합니다. 따라서 잘만 따라서 진행해 나간다면 (1)초보자도 쉽게 따라할 수 있으며, (2)분석지식이 부족한 사람도 분석 과정을 이해하기 쉽고, (3)중간에 깜빡하고 지나가는 작업을 방지할 수 있어서 일정한 수준 이상의 데이터 분석 품질을 유지 할 수 있습니다. 물론, 각 방법론의 의미와 방법을 잘 이해하고 잘 따라가야 겠지요. ^^

KDD, CRISP-DM, SEMMA

 

KDD

Knowledge Discovery in Database의 약자이며 기술과 데이터베이스를 중심으로한 Insight 발굴을 위한 절차와 단계를 정리한 것입니다. 때문에 DBMS를 운영하는 조직에서는 쉽고 유용하게 사용될 수 있습니다. (이를 위해 BI(Business Intelligence)라는 용어로 불리어 지기도 합니다. 서로 다른 점을 보면 BI는 개념적인 측면의 용어이고 KDD는 방법론의 이름이라는 것이 다릅니다.) 때문에 KDD는 데이터베이스에서의 Data를 통해 Insight를 얻기 위한 표준화된 처리 절차와 방법에 대한 정의라고 생각하시면 됩니다.

크게 5단계의 과정, Selection: 추출(Target Data 생성), Pre-processing: 전처리(Preprocessed Data), Transformation: 변환(Transformed Data), Data Mining(Patterns), Interpretation Evaluation: 해석/평가(Knowledge)을 거치게 됩니다.

 

[Google image 검색결과중]



 

SEMMA

Sampling Exploration Modification Modeling Assessment의 약자입니다. Statistics 관점의 방법론으로 분석 솔루션 업체인 SAS사 주도로 만들어진 방법론 입니다. 총 5단계로 구성되며, 샘플링, 데이터 탐색/전처리 등 통계 중심의 방법론 입니다. 이름중에 Sampling이 들어있는 것만봐도 아시겠죠! 그래서, 이것도 역시 비즈니스 상에서 필요한 목적과 요구사항 도출/정리/처리하는데 적합하지 않은 방법 입니다.

[Google image 검색결과중]


 

 

CRISP-DM

CRoss-Industry Standard Process for Data Mining의 약자 입니다.1996년 유럽연합EU의 프로젝트로 시작했습니다. CRISP-DM은 SPSS, Teradata, NCR 등 많은 업체들이 참여했습니다. 현재는 공식적인 활동은 중단한 상태이고 IBM의 SPSS Modeler 가이드로 업계애서 많이 사용중 입니다. 단계는 총 6단계로, 비즈니스 이해, 데이터 이해, 데이터 준비, 모델링, 모델 평가, 고객전달 입니다. 비즈니스 현장에서 많이 쓰이는 방법론이니까 자세히 알아보겠습니다.

각 단계 별로 아래와 같은 목적 및 주요 Task가 있습니다.

  1. 비즈니스 이해
    • ​Determine Business Objects
    • Assess Situation
    • Determine Data Mining Goals
    • Produce Project Plan​
  2. ​데이터 이해
    • ​Collect Initial Data
    • Describe Data
    • Explore Data
    • Verify Data Quality​
  3. 데이터 준비
    • ​Select Data
    • Clean Data
    • Construct Data
    • Integrated Data
    • Format Data
  4. 모델링
    • ​Select Modeling Technique
    • Generate Test Design
    • Build Model
    • Assess Model​
  5. 모델 평가
    • ​Evaluate Results
    • Review Process
    • Determine Next Steps​
  6. 고객전달 ​
    • ​Plan Deployment
    • Plan Monitoring and Maintenance
    • Produce Final Report
    • Review Project

 

[Google image 검색결과중]


이렇게 방법론을 보고 따라서 하려해도 실제로 업무에 적용하는 것은 쉬운 일이 아닙니다. 논리적인 연계와 흐름이 쉽지 않아서 이해하고 목적에 맞게 분석을 수행해 내기가 쉽지 않기 때문이죠.
다음 포스팅에서는 구체적인 사례를 들어가면서 얘기해 보도록 하겠습니다.

https://bigdatamaster.tistory.com/66

 

데이터 분석 방법론 (2) - 예시포함 (CRISP-DM)

데이터 분석 방법론 (2) - 예시포함 (CRISP-DM) 데이터 분석 방법론에 대한 개요와 자료는 많이 쉽게 찾을 수 있는데 실질적인 사례나 예시에 해당하는 내용은 접하기 어려운 것이 현실인 것 같습니

bigdatamaster.tistory.com



감사합니다.

그리고 이러한 기술 활용을 통한 고객 프로파일링 내용과
택스트 분석을 통한 고객분석/고객 성향분석에 대한 정보는 아래를 확인해보세요.

https://bigdatamaster.tistory.com/m/6

 

1 - 고객 프로파일링(Customer Profiling) - 1 개요 :데이터 분석

 1 - 고객 프로파일링(Customer Profiling) - 1 개요 :데이터 분석 안녕하세요, 주제는 고객 프로파일링 입니다. 특히, 고객 Communication 측면에서의 프로파일일에 대해서 이야기해 보겠습니다. 고객은 두

bigdatamaster.tistory.com



https://bigdatamaster.tistory.com/m/96

 

[연재] 고객분석ㅡMBTI

한 사람이 붐비는 인파를 뚫고 할인 매대에서 티셔츠를 집어들다. "예쁘네 이거사야지!" 몆번 훌터보더니 바로 계산대로 가서 계산을 했다. 그런데 저쪽 구석에서 한참동안을 서서 옷들을 뒤척

bigdatamaster.tistory.com

 

반응형
반응형

Good Java / 우재남

Good Java

작가
우재남
출판
한빛아카데미
발매
2016.02.12.

리뷰보기


역시 한국사람이 지은 책이어서 읽기가 편안했습니다. 번역은 가끔 발로한 것들이 있어서..^^


오랫만에 Java 프로그래밍 책을 잡으니 감회가 세로웠습니다.


사실 프로그래밍 언어를 이것 저것 배우고 할줄 알고 있어서 어렵게 생각되지는 않았습니다.

주요 개념과 방법은 전부터 알고 있었고 가벼운 마음에서 보았기 때문이죠. 더욱이 번역서가 아니어서 그냥 죽~ 읽어 내려갔습니다.


예전에 C 프로그래밍을 생각하면서 쉽게 쉽게 책장을 넘겨 갔습니다.


객체지향 언어의 개념도 알고 있던 터라 어렵지는 않았네요...

단지 JAVA로 구체적인 구현방법에 대해서는 새롭게 느껴졌습니다.


그러면서도 신선하게 다가오는 (사소할 수도 있는) 내용이나 기억에 남기고 싶은 내용을 적어봤습니다.


처음 프로그래밍을 배우시는 분들은 하나 하나 따라가면서 연습하시기 좋은 책인 것 같습니다.

특히, 자세한 소스코드와 개념 설명을 위한 그림을 통해 이해하기 쉽게 친절하게 설명되어 있습니다.

 

 

이하 주요내용 입니다.


printf() method의 유형 : 

%d : 정수형    %d ,   100

%f : 실수형     %5.1f , 12345.6

%c : 문자형    %c ,  'c'

%s : 문장형    %s , "itot"


(int) 12345,6  ==> 12345 ( (int)가 정수형으로 바꾸어준다)




예외 타입의 종류


Exception

    -----------> ClassNotFoundException

    -----------> IllegalAccessException

    -----------> RunTimeException

                            ----------> ArithmeticException

                            ----------> NullPointerException

                            ----------> IndexOutOfBoundsException

                                                     ----------> ArrayIndexOutOfBoundsException

                                                     ----------> StringIndexOutOfBoundsException

     -----------> IOException

                           ----------> EOFException

                           ----------> FileNotFoundException





표준 입출력 

    입력 :  System.in         Scanner         BufferedReader

    출력  : System.out    System.err


파일 입출력

   입력 : FileInputStream     BufferedReader   FileReader

   출력 : FileOutputStream    BufferedWriter     FileWriter


(Tip : 한글은 BufferedReader/Writer 사용이 용이 왜냐하면 2바이트 문자 스트림이기때문에...)



접근 제어 수식어별 접근 가능 여부

 수식어

같은 클래스

같은 패키지 

하위 클래스 

외부 클래스 

public

protected 

o

default 

private 



생성자 : 클래스의 이름과 동일한 메소드를 말하며, 주로 인스턴스 생성시 초기값을 정해주기 위해 사용


메소드 오버로딩(Overloading) : 같은 클래스 내에서 메소드의 이름이 같아도 파라미터의 개수나 데이터 형식만 다르면 여러개를 선언 할 수 있는것 (생성자도 메소드 오버로딩 가능) 클래스를 활용 인스턴스 생성 시 초기 값 설정에 효과적임.ㅎ


인스턴스 변수와 클래스 변수

클래스 변수는 클래스 안에 공간이 할당되어 (인스턴스에는 공간이 없고) 여러 인스턴스에서 같이 사용하는 변수

static 키워드를 사용하여 생성


인스턴스 메소드와 클래스 메소드

클래스 메소드를 사용하면 클래스 변수에 직접 접근하지 않고 클래스 메소드를 이용하여 값을 바꿀 수 있다.

(다시말하면 혹시 모를 버그를 방지할 수 있다)



클레스의 상속

기존 클래스가 가지고 있는 필드와 메소드를 그대로 물려받은 새로운 클래스를 만드는 것

public으로 정의된 것만 상속됨 , private으로 정의된 것은 상속 안됨

protected로 정의된 것은 자신의 클래스 또는 패키지에서만 접근 가능(패키지는 클래스를 모아놓은 묶음)

extends 키워드를 사용

class Sedan extends Car {

}


생성자의 상속

수퍼 클래스의 생성자가 먼저 생성, 후 서브 클래스의 생성자 생성


오버라이딩

상위 클래스의 메소드를 하위 클래스에서 재정의 하는 것


메소드 오버라이딩의 제한 : final 키워드 사용



추상 클래스

직접 인스턴스를 생성할 수 없는 클래스

서브 클래스에서 상속 받은 후 서브 클래스에서 인스턴스 생성 가능

abstract 키워드 사용


추상 메소드

본체가 없는 빈껍데기 메소드로 서브 클래스에서 오버라이딩하여 사용하도록 하기 위해 사용

(무조건 오버라이딩해야함, 안하면 문법오류 발생)

메소드 앞에 abstract 키워드 사용


인터페이스

추상 클래스와 비슷하지만 인터페이스는 필드, 추상 메소드를 가질수 있고, 일반 메소드, 상생자는 가질 수 없다.

필드도 static final을 붙인 상수화한 필드만 사용가능하며 반드시 초기화 해야함.

implements 키워드 사용


다중상속

논리적으로 가능하나 JAVA는 다중상속 불가, 그러나 인터페이스를 이용하여 다중상속한 것으로 구현 가능.

 

 

반응형
반응형

5-1. 고객분석의 목적


 고객분석을 왜 할까요? 

(이게 바로 목적이 되겠지요? ^^)


고객은 '기업의 상품이나 서비스를 구매/이용하고 대가를 지불하는 사람'이라고 할 수 있습니다. 

그러니 고객 분석은 당연히 기업에서 할 것이고 

기업의 모든 활동의 목적은 '고객이 상품이나 서비스를 더 많이 구매/이용하게 하기 위함'일 것입니다.

너무 싱겁게 정의가 끝나버린 것 같네요..

그렇지만 목적을 확실히 해야만 효과를 극대화 할 수 있으니 

정확하고 명확한 정의는 매우 중요한 것 같습니다.

다시말하면 고객 분석도 '고객이 상품이나 서비스를 더 많이 구매/이용하게 하기 위한 활동'이며 특히,

'고객과 관련된 데이터를 분석하여 경영 활동을 촉진하는 것'

이 목적이라고 할 수 있습니다.


그러면,


어떻게 고객이 상품이나 서비스를 더 많이 구매/이용하게 할 수 있을까요?

특히, 데이터 분석을 통해서 무엇을 찾아내고 알아내야 할까요?

다시 말하면 무엇을 찾아내야 고객이 더 많은 상품/서비스를 구매/이용하게 할까요?

강제로는 안될 테니 결국 고객이 좋아할 만한 상품/서비스를 만들고 제공할 수 있어야 겠지요.

이러한 활동은 기존의 경영관리 및 마케팅 측면에서 많이 고민되어 왔습니다.

경영관리는 조금 거리가 있다고 생각될 수 있으니 마케팅 측면을 살펴 보시지요.

마케팅하면 생각나는게 있으시죠? ^^

네, 바로 마케팅 믹스, 4P 입니다. 

최근에는 4C라고 하여 고객관점의 정의도 있습니다. 

4E라고하여 감성적인 부분까지 고려하는 방법도 있네요.


간단히 정리하면 4P는 Product(제품), Price(가격), Place(유통), Promotion(촉진)을 의미합니다.

4C는 Customer Value, Cost to the Customer, Convenience, Communication을 의미합니다.

4E는 Evangelist, Enthusiasm, Exchange, Experience 입니다.

4P에 무형의 가치를 축한 7P도 있습니다.

7P는 4P에 People, Process, Physical evidence를 추가한 것 입니다.

(자세한 내용은 검색하시면 바로 찾아보실 수 있을꺼에요..~)


자, 너무 마케팅 적인 이야기를 한것 같은데요...

중요한 것은 여러가지 마케팅적인 관점의 전략을 고민할때 바로 중심은 고객이라는 것입니다.

그리고 이러한 고객을 이해하는데 중심이 되야하는 것이 바로 데이터(고객분석)이라는 것이지요.


짧고 굵게 정리하면,

고객분석은 회사에서 (상품/서비스를 팔아서) 돈을 벌기위해 하는 것이고,

이를 위해서 마케팅 전략(마케팅믹스) 수립 시 기준과 의미를 제공하기 위해 

고객과 관련된 데이터를 분석하는 활동이 고객 분석이라고 하겠습니다.


그렇다면 어떻게 해야 고객 분석을 잘 할 수 있을까요? ~ ^^


다음에는 고객 데이터의 종류와 종류에 따른 수집/저장/처리/관리 방법에 대해서 알아보겠습니다.

반응형

+ Recent posts