신규 Plant 생성 후 Material view 확장하여 BOM 생성

신규 Plant 정의
SPRO > Enterprise Structure > Definition > Logistics - General > Define Plant

신규 Plant 생성

 

당연하겠지만 valuation area : plant 인지 확인해본다. (99%는 plant)

SPRO > Enterprise Structure > Definition > Logistics - General > Define valuation level

 

Material master 에서도 신규 Plant view 를 확장해준다.

MRP1,2,3,4 그리고 Work scheduling view 가 생산관련 view

MRP Type 은 MRP 사용하려면 PD설정 Lot sizing 은 WB 주단위 로트사이즈

MRP controller 도 정의해서 입력한다
메뉴위치를 찾아갈 때마다 MRP 도 CBP 의 한 종류라는 사실이 늘 알면서도 새롭다. 실무에서는 MRP 와 CBP 를 종종 다른것으로 지칭하기 때문인가 싶다.

Materials Management > Consumption-Based Planning > Master Data > Define MRP Controllers

대부분 미리 정의된 MRP type 을 사용하지만 MRP type 옵션도 볼거리가 많다

가장 많이 사용하는 PD 는 MRP Procedure 가 D : MRP 로 정의됨

D* 는 Demand-driven replenishment
M* 는 MPS
ND 는 no MRP
P* 는 MRP
R* 는 Time-Phased Planning
R* 은 Replenishment 
V* 는 Re-order point 

 

BOM 생성이 되지 않아서 확인해보니 신규 plant 생성 후 material type 에서 Quantity, value updating 설정이 되지 않으면 수량,금액 관리를 할 수 없었다.

Logistics - General > Material Master > Basic Settings > Material Types > Define Attributes of Material Types

요구사항에 의해 설계BOM 생성

마이너스 소요량을 입력하여 30번 아이템에 by-product 를 한번 해본다. 수량은 잘 입력이 된다.

마이너스 소요량이 입력가능한 이유는 item category 가 그렇게 정의되어 있기 때문이다

Production > Basic Data > Bill of Material > Item Data > Define Item Categories

봐야할 옵션이 많지만 우선은 기본적인 것부터 짚고 넘어간다.

REPORT YSOURCEDOWN line-size 1023 message-id ytest1.
data: g_program type progname.

select-options: is_pgmnm for g_progname.
parameters: ip_dir typs string default 'C:\ABAP\'.

initialization.
  is_pgmnm-sign = 'I'.
  is_pgmnm-option = 'CP'.
  is_pgmnm-low = 'Z*'.
  append is_pgmnm.
  is_pgmnm-low = 'LZ*'. "function module
  append is_pgmnm.
  is_pgmnm-low = 'Y*'.
  append is_pgmnm.
  is_pgmnm-low = 'LY*'.
  append is_pgmnm.

start-of-selection.
  data: l_off type i,
   l_len type i,
l_dir type string,
l_ch.
l_dir = ip_dir.
condense l_dir no-gaps.
l_off = strlen( l_dir ) - 1.
l_ch - l_dir+l_off(1).
if l_ch <> '\'.
  concatenate l_dir '\' into l_dir.
endif.

data: begin of ls_reposrc,
progname type progname,
end of ls_reposrc,
lt_reposrc like table of ls_reposrc.

select progname
  into table lt_reposrc
from reposrc
where progname in is_pgmnm
and r3state = 'A'.

data: begin of ls_lines,
txt(300),
end of ls_lines,
lt_lines like table of ls_lines,
l_filenm type string.

loop at lt_reposrc into ls_reposrc.
clear lt_lines[].
read report ls_reposrc-progname into lt_lines.
concatenate l_dir ls_reposrc-progname '.abap' into l_filenm.

call function 'GUI_DOWNLOAD'
exporting
filename = l_filenm
tables
data_tab = lt_lines.
endloop.

'SW > ABAP' 카테고리의 다른 글

YFILESHARING  (0) 2024.03.27
SAP HANA Studio 설치, ADT 설치(ABAP Development tools) 설치  (0) 2023.06.23
ABAP OOP method 호출방법  (0) 2017.08.08
picture 조회 안되는 현상 조치  (0) 2017.06.05

prompt engineering

2022.11.30 ChatGPT 등장
알파고와는 달리 누구나 쓸 수 있는 서비스

1993 mosaic개발 > 1994 Netscape, Yahoo, Amazon탄생 > 1998 Google 탄생
30년 만에 인공지능 혁명

2020.06 GPT-3.0
2022.11 GPT-3.5
2022.11.30 ChatGPT 발표

GPT-3.5 = GPT-3.0 + RLHF (인간에 의한 피드백)
GPT-4 멀티모달 인공지능 (여러모드, 텍스트,이미지)
GPT-3.5 16개 병렬 = GPT-4
입력단어의 수가 25,000단어(영어기준)
토큰 32,767개 = 한글 32,767자

1.대화AI혁명
Transformer 2017년 구글 발표
Attention 매커니즘으로 데이터의 시퀀스를 처리
(문맥에 집중할 단어를 결정하는 방식)
인간의 말을 알아듣는 것처럼 보이는 인공지능 서비스

2.빠른 생성 AI혁명
콘텐츠를 자동으로 빨리 많이 잘 생성하는 개인과 조직이 승리

3.일반인공지능(AGI)혁명
모든 상황에 일반적으로 두루 적용할 수 있는 서비스
AGI vs. Domain-Specific 더 효율적인걸 써보고 비교해야함

32,727 토큰 길이만큼 기억 가능
모델 사이즈가 커지면 커질수록 프롬프트만으로도 좋은 결과를 얻는다는 것을 우연히 발견
prompt Engineering 중요

Zero-shot learning
프롬프트만 입력하여 결과 도출
One-shot learning
하나의 예시를  입력하여 결과 도출
Few-shot learning
여러 예시를 모델에 입력하여 결과 도출

In-Context Learning이 아닌 것
Pre-trained
. Generative Pre-trained Transformer
. 기존 원문서로 Self-Supervised Learning 한 것
어떤 AI를 사용하는건 이미 Pre-trained 된 AI갖고 오는 것
Fine-tuning
. Q&A 데이터로 기존에 학습된 매개변수를 수정
In0context learning 하여 활요하는 것 = prompt engneerinig

언어모델 : LM
N개의 단어(토큰)을 주면, N+1번째 단어를 생성
GPT-4:32,767개의 토큰을 줄 수 있음

언어 모델을 만드는 AI모델 : Transformer
input:외국어>Encoders>Decoders>output:영어
단어를 벡터로 변환(embedding)
여러 모델 중 transformer 모델이 현재까지 가장좋음

자동회귀(auto-regressive)언어 모델
첫 단추를 잘못 끼우면 계속 잘못된 방향으로 흘러감 -> hallucination 문제 발생
AI는 언제든지 틀릴 수 있다는 것 고려

언어 모델의 학습 방법:Self-Supervised Pre-Training
인터넷의 거의 모든 문서를 수집해서 랜덤하게 구멍을 뚫고 맞히는 연습을 함
틀릴 때마다 신경망의 연결 강도를 조정
ChatGPT 신경망의 연결강도는 1,750억 개

그전에는 인공지능 개발시 데이터 레이블링 필요 : Supervised Learning
이제는(GenAI) ㅔ이터 레이블링 작업이 필요 없게 됨, 기존 문서에서 단어 학습>굉장히 많은 일을 하는 AI가 됨

기계학습(머신러닝)이란? 처음엔 잘 못하지만 경험할수록 성과가 좋아지는 기계, 학습하는 기계

수학적인 알고리즘에 불과 : 1,750억 개의 X가 있는 방정식, 비선형 최적화 문제이므로 완벽하게 풀 수 없음

초거대 신경망(LLM)은 LNN의 언어모델
GPT-4: 1조7천억 개 파라미터(추정)
파라미터 수는 1년에 10배 씩 증가
다음 해에 1조가 아닌 10조, 100조 나올 수 있음

초거대 신경망을 만드는 비용?
파라미터수에서 0을 하나 뺀 원화 비용으로 얼추 추산
GPT-4는 1700억 정도
무어의 법칙 : 컴퓨팅 성능은 18개월마다 2배 향상, 가격은 반으로 하락

미래에는 부담없이 사용될 지도...
모든 개인이 인공지능을 소유할 수 있음

거대기업은 Closed Source LLM (소스 비공개)
Meta : LLaMA, LLaMA-2 발표 (소스 공개)

Closed Source LLM : New Bing, Bard, Ernie, SenseChat, Anthropic
Open Source S(Small)-LLM : LLaMA, Koala, Alpaca, Vicuna, StableLM, Hyena

필수적으로 경험해야 할 생성AI 서비스
ChatGPT : 무료, 유료는 월20달러
New Bing : GPT-4무료이용
카카오톡 AskUp 친구추가 : ?검색, !(GPT-4), URL내용요약
뤼튼: wrtn.ai 많은 AI 써볼 수 있음
DeepL : 번역을 잘 함
구글 Bard
Claude
마이크로 소프트 CoPilot 월30불 : ms 워드 파일을 작성하면 ChatGPT가 PPT슬라이드 형식으로 정리하여 만들어 줌

생성 AI로 업무 생산성 증진

==================================
Prompt Engineering 개념 및 활용법

prompt : AI가 수해애야 할 작업을 설명하는 text (현재는 텍스트지만 미래, 음성, 이미지, 영상 가능)
생성AI모델과 소통하는 기술

텍스트 생성 AI, 이미지 생성 AI, 멀티 모달 생성 AI
정해진 문법이 존재하는 것이 아니다.
좁은 의미로는 생성AI를 잘 쓰는것
넓은 의미로는 소비자 관점이 아닌 제작자 관점에서 고품질의 서비스와 시스템을 최적화 하여 제작하는 방법론

Prompt Engineering 의 범주
API, Plug-in, RAG:Retrieval-Augmented Generation, Prompting Gen AI for Target Gen AI
(프롬프트를 생성을 위해 AI 사용), Fine tuning

예시:
한국어로 논문 작성 > DeepL 영어로 번역 > GPT-4 학술적으로 수정 > 영어 논문 완성

Chain-of-Thought Prompting
질문을 하고 정답예제를 알려주면 참고해서 문제를 품
질문/대답의 길이만큼 비용 지급
좋은 답을 얻을 수 있는 짧은 prompt 생성

프롬프트 기법
Generated knowledge prompting
모델에 먼저 관련된 사실을 생성하도록 요청한 다음, 그 정보를 바탕으로 주어진 prompt를 완료

Least-to-most prompting
복잡한 문제나 질문을 여러 하위 문제로 나누고, 이러한 하위 문제들을 순차적으로 해결함으로써 전체 문제를 해결

Self-consistency decoding
모델의 일관성과 정확성을 향상시키는 방식으로써 여러개의 Chain-of-Thought 시뮬레이션(rollouts)을 수행한 후, 그 결과들 중에서 가장 일관적으로 도출된 결론을 선택

Complexity-based prompting
모델의 다양한 생각의 경로 중에서 가장 복잡하고 긴 경로를 선별하고, 그 결과 중에서 가장 일관적으로 도출된 결론을 선택

Self-refine
LLM의 답변을 반복적으로 개선하는 데 중점을 두며, 모델은 자신의 답변을 평가하고, 그 평가를 바탕으로 다시 문제 해결
-> step by step 접근으로 hallucination 방지

Plug-in
chatGPT에서 3개까지 설정할 수 있음

LangChain
LLM을 모듈로서 다른 기능과 결합하여 새로운 애플리케이션을 만들 수 있음
DB에서 굉장히 반복적인 대화를 생성해야 될 때 사용
인터넷 검색 연동
구조화된 자료(통계자료, DB등) 분석 후 prompt 생성
질문에 대해 문서에 기반한 답변 생성

검색 증강 생성 RAG
질문을 벡터로 변환, 답변DB도 벡터변환, 질문과 가장가까운 벡터를 찾아 비슷한 문서를 토큰한계만큼 입력하여 질문하면 가장 좋은 답변이 나옴

생성 AI를 학습시키는데 많은 비용이 소요됨 > 자주 학습을 할 수 없음 > 최신 정보는 RAG를 활용
ChatGPT는 2021년 9월까지 데이터를 학습했으므로 그 이후의 정보와 관련된 질문에 대답 불가능, 우디는 RAG와 결합하여 최신 정보 기반 서비스를 가능하게 함

Embeddings-Based Search
1. Generative Pre-trainde 모델
이미 학습이 완료되어 output도출이 가능한 모델
자주 학습시킬 수 없음
2. 최신 정보의 학습
fine-tuning : 모델 가중치를 통한 학습, 모델을 훈련 세트에 맞게 조정
Embeddings : 모델 입력을 통한 학습, 텍스트, 이미지를 벡터로 변환, 지식을 입력 메시지에 삽입

활용 수준 7가지
1. 생성 AI모델 사용
2. 생성 AI모델 API 활용
3. Plug-in 활용
4. RAG&Fine-tuninig
5. 생성 AI독자적 개발
6. Agent 개발
7. 연합 학습(Federated Learning) 방식 개발

step by step
1) Manual, API & Plug-In
2) RAG, Finetuning, EFM
3) Agent & Federated Learning

AI가 사람을 대체하는 것이 아닌, AI를 잘 활용하는 사람에게 AI를 활용 못하는 사람이 대체될 것

AI의 성능은 좋아졌으나 여전히 실수하며 영원히 실수할 것
AI가 내놓은 결과를 날카롭게 검토하는 비판적 사고력 중요
Human-AI Loop
창의적 비판적 사고를 하고 많은 지식을 가진 사람이 주도하는 조직 필요

우연히 세이노의 가르침의 작가 세이노의 유튜브 인터뷰를 접했다.

많은 팬을 거느린 그러나 베일에 싸인 작가, 세이노
여전히 얼굴을 가리고 필명으로 응했다.
20년 만에 방송출연이고 앞으로도 없을 것 같다고 하셨다.

이 시대 젊은이들에게 한 마디 조언을 한다


'Life' 카테고리의 다른 글

오은영박사의 부모 십계명  (0) 2022.09.27
월급쟁이 투자 방법  (0) 2022.02.22
간헐적 단식 유용한 경험담  (0) 2022.01.10
일론 머스크의 5단계 엔지니어링 원칙  (0) 2021.09.14
연금저축펀드 (feat 홍춘욱)  (0) 2021.08.19

한번 읽으면 두번 깨닫는 객체지향 프로그래밍 내용 정리
추천사
현재의 소프트웨어 개발 및 운영 환경은 MSA, 클라우드가 대세. 마이크로 서비스는 비즈니스 기능 단위의 서비스를 작게 쪼개 API 단위로 개발하여, 소프트웨어 구조에서 개발과 유지보스를 더욱 쉽게 만들어주는 구조. 마이크로 서비스의 원천은 결국 객체지향의 객체이다. 따라서 객체지향을 이해하고 객체지향적으로 프로그래밍하는 것은 여전히 클라우드 시대에서도 제일 중요한 부분이다. - 강상진 - 
최근 IT 개발과 서비스 환경이 클라우드로 이동하면서 가장 화자되는 용어는 MSA, CI/CI(Continuous Integration/Continuous Deployment) 이다. 이 둘의 철학과 장점에 많은 사람들이 동의하지만 실제 구현을 위해서 많은 어려움을 겪는다. MSA에 관련된 책들을보면, 많은 내용이 객체지향과 닮아있을 뿐 아니라 그 뿌리가 같은 바탕에서 시작되었다고 느낄 것이다. 오래된 개념 같지만 다시 재조명이 필요한 객체지향이라는 개념을 쉽게 접근할 수 있도록 해준다. - 장현태 - 

Chapter 1. 발상의 전환

[객체지향의 정의와 목표의 전환]
1. 대부분 개발자가 기능 중심 개발에 매달리는 이유 - 열악한 개발환경과 촉박한 납기. 본래부터 최저가의 프로젝트로 촉박한 일정이 고객의 요구사항 변경으로 더욱 촉박해진다. 고객은 프로젝트 구성원보다도 훨씬 더 기능중심적으로 생각한다.(고객이기 때문에 매우 당연함) 이 사태가 당장 눈앞에 해치워야 할 요구사항의 기능을 개발하는데 급급해진다.
2. 기능 중심 개발 - 코드 품질 저하. 당장 기능구현은 당연히 최우선되어야 한다. 하지만 기능 구현에만 집착하면 더 중요한 다른일 (유지보수 용이, 확장성 등)들은 신경 쓸 여력이 없어진다. 개발자는 의도하지 않아도 기능 중심 개발로 내몰린다. 이는 코드의 중복, 코드 속성의 과도한 노출, 코드 메소드의 과도한 노출, 배치의 일관성 상실, 가독성 저하, 의존성 증가, 사이드이펙트 증가, 재사용 불가, 코드수정 및 추가 디버그의 어려움, 유지보수와 고도화 프로젝트에 악영향이라는 부작용을 낳는다. -> 기능 중심 개발은 비록 작동하더라도 악취가 풍긴다. (code smell) 나중에 개선하고 싶어도 스파게티 코드로 고치기 어렵고 유지보수가 힘들며 추가 프로젝트도 힘들다. 
3. 유연한 소프트웨어는 코드 품질 향상 - 고객이 원하는 좋은 소프트웨어 = 고객이 원하는 기능 구현 + 유연한 구조
[유연한 소프트웨어가 되었을 때의 특징]
. 코드이 중복이 거의 없다 : 하나의 클래스는 하나의 일만 한다는 원칙을 잘 지키면, 코드 중복이 거의 없다.
. 코드 속성과 메소드의 캡슐화가 잘 되어 있다 : 캡슐화 원칙을 잘 지키면, 보호해야할 속성, 감춰야 할 메소드가 잘 정리되어있어 코드의 의존성이 낮아지고, 가독성이 좋아진다.
. 코드 배치의 일관성이 잘 지켜졌다. : 메소드는 자신의 이름에 해당하는 로직만 담기고, 변수 배치의 일관성이 있으며 다른 클래스에 무질서하게 의존하지 않는다.
. 코드 가독성이 좋다. : 유연한 소프트웨어는 클래스의 속성과 메소드가 필요한 분량만 가진다. 코드의 길이가 너무 짧지도 너무 길지도 않다.
. 코드 의존성이 낮다. : 각 클래스, 메소드, 속성의 역할이 명확하기 때문에 의존을 연결할 때 어떻게 해야 효과적인지 눈에 잘 들어오고, 필요한 코드에만 의존한다.
. 사이드 이펙트 감소 : 하나의 코드 수정이 다른 코드로 영향을 끼치는 상황이 줄어들어 사이드 이펙트가 감소한다. 그래서 코드를 수정할 때 전보다 안심하고, 수정 후 버그 테스트가 수월하다.
. 코드 재사용이 쉽다. : 코드 의존성이 낮아지고 가독성이 좋아지면 코드를 모듈화하기 좋아진다. 재사용이 좋아지면 개발 생산성도 대폭 향상된다.
. 코드 수정,추가,디버그가 쉽다. : 실무에서 디버그는 개발만큼 중요하다. 디버깅은 결국 코드를 수정하는 작업이다. 코드 품질이 좋아지면 수정 작업도 편해진다.
. 유지보수 와 고도화 프로젝트하기 좋다. : 유연한 소프트웨어는 고객의 수정,확장 요구사항을 더 빠르게 구현할 수 있기 때문에 고객은 더 만족할 수 밖에 없다. 개발자는 생산성이 높아져 업무하기가 수월해진다.
4. 관계의 의존성은 낮게, 기능의 집중도는 높게 (= 높은 응집도와 낮은 결합도)
객체지향에서는 기능보다 관계가 더 중요하다. 소프트웨어의 모듈은 하나의 일만 잘 수행해야 하고, 하나의 모듈이 다른 모듈에 의존하는 경우를 최대한 줄요야 한다. 
5. 객체지향의 정의와 목표
"객체지향은 낮은 관계의 의존성과 높은 기능의 집중도를 지향하여, 소프트웨어의 유연함을 극대화하는 개발 기법이다."
객체지향의 정의 = 객체지향의 목표 = 객체지향적인 개발
= 낮은 관계의 의존성과 높은 기능의 집중도 = 유연한 소프트웨어 = 좋은 코드 품질
[고정관념의 전환]
1. 객체지향의 구현 대상은 현실 세계? >> 객체지향은 현실 세계를 구현하기 보다는 새로운 세계를 창조한다.
2. 객체지향은 현실 세계와 동일하다? >> 객체지향 소프트웨어의 객체 = 현실 세계의 사물 특성 + 주도성
3. 객체 하나하나를 잘 만들어야 한다? >> TDD 테스트 주도 개발. 로직 구현보다는 객체가 외부에 노출하는 인터페이스를 잘 설계하는 것. 객체지향적으로 리팩토링 하면서 객체 내부와 객체 간의 관계를 깔끔하게 정리하는 것.
"점(객체 하나하나)보다 선(객체 간의 관계)로 접근한다."
4. 기술을 완벽하게 적용해야 한다? >> 전문가 조언은 얻을 것만 얻고 버릴 것은 버리자. 예를 들어 "GoF의 디자인 패턴" 책에는 23개의 디자인 패턴이 있다. 현장에서 많이 쓰고 객체지향의 원리를 잘 알 수 있는 패턴만 골라 익혀 빠르게 현장에서 쓰고 이 후 하나씩 패턴을 익힌다. UML을 지나치게 표준에 맞춰 그릴 필요 없다. 의사소통이라는 더 큰 목표에 맞춰 편하게 그리자. 현장에서 바쁜 일정과 여러 개발자와 협업하다 보면 꼼꼼하게 설계하지 못할 때도 있다. 규칙을 지향은 하되 완벽하게 지키지 않아도 큰 해는 없다. 보통은 납기준수가 가장 우선적인 목표기 때문이다. 
5. 정리
"객체 지향의 구현 대상은 보통 새롭게 창조된 세계이다"
"객체지향은 현실 세계보다 훨씬 주도적이다"
"객체 하나하나를 잘 만드는 것보다 객체 간의 협력에 집중한다."
"기술을 완벽하게 적용할 필요까지는 없다. 우선 할 수 있는 부분부터 먼저 적용한다."

Chapter 2. 객체지향을 돕는 도구

[객체지향 생각의 도구(관찰, 추상화, 패턴인식)]
1. 프로그래밍 언어의 사상을 배우고 따른다는 것 - 언어의 문법을 배우고 따른다. 언어의 사상을 배우고 따른다. 
2. 절차지향 언어의 사상과 단점
객체지향 이전의 언어는 주로 절차지향 언어였다. 절차지향 언어는 처리-판단-반복의 기초 문법, 함수 등의 명령어를 활용하여 위에서 아래로(절차적으로) 수행하는 언어이다. 또한 함수를 이용하여 로직의 모듈화를 할 수 있다. '어떤 기능'을 함수로 모듈화 하고 이를 재사용하는 것이다. 그러나 절차지향의 단점은 소프트웨어가 커지면 전역 변수를 여러 함수에서 같이 조작할 수 있다. 함수의 역할은 객체지향의 클래스보다 역할이 한정될 수밖에 없다. 함수는 if문 for문 처럼 명령어의 한 요소처럼 쓰인다. 소프트웨어가 커지고 복잡해질수록, 효과적인 모듈화, 재사용성에 한계가 있다.
3. 객체지향 언어의 사상과 장점
절차지향 언어의 단점을 개선하고 더 나은 장점을 추구하고자 객체지향이 탄생했다. 객체지향은 프로그램을 처리-판단-반복-함수호출의 명령어들의 연결이라고 보는 과거 시각에서 벗어나 여러개의 독립된 단위, 객체들의 모임으로 접근했다.
"객체지향은 사람이 사물(물체)에 대해 인식하는 사고를 거의 그대로 활용하여 프로그래밍할 수 있다 .객체지향은 인간이 이해하기 좋은 언어이다."
절차지향 언어는 데이터를 대부분 공동으로 관리하여 여러 함수가 데이터를 함께 쓴다. 때문에 데이터를 여러 함수가 같이 의존하게 된다. 이렇게 의존성이 높으면 A함수가 데이터 조작으로 데이터를 함께 공유해서 쓰고 있는 B함수의 작동이 잘못될 수 있는 치명적인 버그가 생길 수 있다.
객체지향은 '데이터 관리 주체'가 '데이터를 소유한 객체'로만 명확하게 지정되도록 유도한다. 그래서 객체 간에 데이터를 의존하는 경우가 낮아진다. 
객체지향의 장점 -> 사람이 사물을 바라보는 익숙한 관점을 프로그래밍으로 구현 -> 객체지향에서의 사물은 객체 -> 객체는 속성과 기능 2가지가 있다 -> 속성과 기능을 소유한 객체 스스로 책임지게 유도함 -> 관계의 의존성을 낮추고, 기능의 집중도는 올리는 출발점.
4. 관찰 >> 추상화 >> 패턴인식
관찰단계에서 의미있는 데이터만 발췌하고, 중복된 데이터는 하나로 합칠 수도 있다. 추상화를 통해 반복적으로 동리하게 인식할 수 있는 패턴들이 있다. 이는 객체간의 관계와 관련되거나 반복되는 로직일 수도 있다. 나쁜 패턴은 버리고, 좋은 패턴을 적절하게 적용할 줄 알아야 한다. 객체 간의 관계를 잘 조직화 하도록 도와주는 규칙과 노하우가 있다. "디자인 패턴"과 "리팩토링"이라는 기법이다. 
5. 관찰 : 사물이나 현상을 자세히 살펴보는 것
관찰로 사물과 현상 관련 데이터를 인식한다. 이때 점보다 선으로 접근한다. 이 데이터는 사물과 현상의 본질을 꿰뚫는 단서를 제공해야 한다. 이 사물의 관찰과정에서 드러나는 데이터들은, 사물의 중요한 특징을 누락하지 않아야 한다. 이 특징들이 지나치게 많아 과잉정보가 되어, 사물의 판단과 해석에 지장을 주어서는 안 된다. 
6. 추상화 : 우리가 인식한 많은 데이터 중 의미 있는 데이터만 가져오고 나머지는 버리고, 더 큰 단위의 의미 있는 정보로 만들 수 있다'
점의 추상화 = 많은 데이터 중에 의미 있는 데이터만 가져오고 나머지는 버린다.
선의 추상화 = 의미 있는 데이터를 모아 더 큰 단위의 의미 있는 정보로 만든다. 
7. 패턴인식 : 관계의 의존성은 낮추고, 기능의 집중도를 높이는 방법은 개발 경험을 통해 지속적으로 개선된다.
디자인 패턴은 점(코드,함수,로직)의 재활용이 아니라 선(관계)의 재활용이다. 
[객체지향 표현의 도구(UML)]
UML(Unified Modeling Language)는 객체지향 모델링을 시각적으로 나타내는 도구이다. 
UML 종류
- 유스 케이스 다이어그램 : 요구분석단계에서 업무의 전체 시스템 구성을 한눈에 파악할 때 도움. 
- 클래스 다이어그램 : 클래스의 정보와 클래스 간의 관계를 한눈에 파악하는데 도움.
- 시퀀스 다이어그램 : 객체와 객체 사이의 메세지 흐름을 표현하여 한눈에 파악하는데 도움.
- 상태차트 다이어그램 : 객체 내부의 행동의 흐름을 그려 이벤트별 상태 변화를 한눈에 파악하는데 도움.
- 액티비티 다이어그램 : 순서도와 비슷하여 객체들의 활동순서를 파악하는데 도움을 줘 작업의 흐름을 한눈에 파악하는데 도움.
- 컴포넌트 다이어그램 : 레고조립 설명서처럼 완성된 모듈끼리 서로 어떻게 연결되는지 컴포넌트 간의 관계를 한눈에 파악하는데 도움.
- 배포 다이어그램 : 배치 어플리케이션과 서버가 어떻게 배치가 되었는지 보여줘서 배치 상태를 한눈에 파악하도록 도움.

Chapter 3. 객체지향의 넓이

[객체지향의 기본 요소 5가지]
1. 객체(Object)
객체는 사람이 인식할 수 있는 최소한의 의미를 가진 사물이다. + 객체는 세상에서 유일한 실체가 있는 사물이다. = 객체는 사람이 이식할 수 있는 최소한의 의미를 갖고, 유일하고, 실체로 존재하는 사물이다. 
2. 클래스(Class)
분류와 범주의 차이에서, 분류는 종류별로 구분하여 체계적이고 계층적으로 정리한 Tree 와 같고, 범주는 상세 목록에 해당하는 Node명이라 할 수 있다. 분류와 범주를 통해 우리는 세상의 사물과 생명의 종류를 추상화(단순화)시켜 바라볼 수 있다. 
분류와 범주 ≒ 클래스  = 추상적 ; 객체화 = 객체 = 구체적
클래스는 코드로 만든 설계도일 뿐, 소프트웨어 세상으로 나온 구체적인 실체는 아니다. 클래스를 소프트웨어로 탄생시키는 작업을 객체지향 언어에서 클래스를 기반으로 객체를 생성한다고 표현한다. 
3. 속성(Attribute)
속성은 객체가 가지고 있는 고유 값이고 변수 혹은 상수라고도 한다. 뿐만 아니라 객체 자체를 변수로 받을 수 있다. 좋은 설계를 위해 어떤 속성을 정의해야 할까? 우리는 객체에 해당하는 속성을 완벽하게 찾는 것을 목표하기 보다, 속성의 캡슐화만 주의하면 된다. 속성은 ' 객체가 주어진 역할을 최대한 잘 수행하기 위해서, 어떤 기능이 필요할까?' 하는 관점으로 접근해야 한다. 
. 속성은 객체가 가진 고유한 값이다.
. 객체의 속성을 추출할 때는 현실 세계에 존재하는 대상을 객체로 만들거나,
. 현실세계에는 없는 새로운 객체를 만들어야 하는 두 가지 상황이 있다.
. 완벽한 속성을 추출하기 위해 애쓸 필요는 없다.
. 속성을 현실 속 사물과 완벽하게 동일하게 구현할 필요도 없다.
. 객체의 기능을 가장 잘 발휘할 수 있는 속성을 찾아야 한다.
. 객체가 다른 객체와 잘 협력할 수 있도록 돕는 속성을 찾아야 한다.
. 이것은 점(객체 하나나하나)보다 선(객체 간의 관계)으로 접근하면 지킬 수 있다.
4. 메소드(method)
객체지향에서는 하나의 객체를 크게 속성과 메소드로 나눈다. 메소드를 절차지향의 함수처럼 로직관점이 아닌 객체 설계 관점으로 시야를 넓게 가진다. 즉, 객체가 제 역할을 수행할 때 필요한 기능은 무엇일까 생각하는 관점에서 메소드를 작성한다. 캡슐화를 지키고 속성을 다른 객체가 접근하지 못하게 private으로 선언하고, 메소드로만 접근하도록 구성한다. 
. 메소드는 절차지향의 함수처럼 활용할 수 있다.
. 메소드는 객체가 자신 또는 다른 객체에게 제공하는 '기능'이다.
. 메소드는 객체가 외부에 제공할 기능(행동)을 적절한 문장으로 정의하고, 그 기능을 코드로 구현한 결과물이다.
. 메소드는 객체의 속성을 변경하는 유일한 통로가 되어야 한다.
. 메소드는 다른 객체와 상호작용하는 통로이다. 
5. 생성자(Constructor)
생성자는 객체가 처음 생성될 때 호출되는 메소드이다. 생성자의 인자값을 다르게 주어서 여러 생성자를 호출하는 오버로딩이 많이 사용된다. 생성자가 필요없다면 생성자를 구현하지 않아도 된다.
[객체지향의 근본 조건 7가지]
객체지향 보물지도 구성
객체(클래스) - 클래스는 코드로 만든, 태어날 객체의 설계도이며, 객체는 클래스라는 틀을 통해 실체로 태어난 존재이다.
클래스 그룹 - 부모 클래스와 자식클래스 구성원들의 그룹이다. 최상위에 부모 클래스 또는 인터페이스가 있고 상속받은 자식 클래스들이 존재한다.
부모클래스(인터페이스) - 클래스 그룹에서 유일하게 존재하는 최상위 클래스
자식클래스(상속 클래스) - 부모 클래스로부터 속성과 기능을 상속받은 클래스
실행클래스 - 객체를 어떻게 생성하고 실행할 것인지 코딩하는 클래스. 자동차의 운전석과 같음. main() 메소드가 있는곳
클라이언트 클래스(컨텍스트 객체) - 어느 클래스 그룹의 기능을 사용(의존)하는 클래스
소프트웨어(프로그램) - 소프트웨어와 프로그램에 큰 의미 차이를 두지 않고 객체, 클래스처럼 편하게 호칭함.
1. 상속(세로) inheritance
기존의 분류 계층에서 새로운 하위 계층이 생성될 경우, 이 하위 계층의 특징은 기존 상위 계층의 특징을 기본적으로 소유하면서, 다시 자신만의 특징을 추가할 수 있다. 다만 접근지정자에 따라 상속범위를 제한 할 수 있다.
ex) java 접근지정자
public > protected > default > private 순으로 상속 범위 정해짐.
public : 패키지, 상속 유무에 관계 없이 모든 곳에서 접근 가능
protected : 상속받은 모든 곳에서 접근 가능
default : 같은 패키지에서만 접근 가능
private : 자기 자신만 접근 가능 
상속의 효과
코드관점 - 코드의 재사용 가능, 코드의 수정(확장)의 편리함.
개발 편의성 관점 - 인간에게 익숙한 분류와 범주의 개념 적용. 
낮은 관계의 의존성과 높은 기능의 집중도를 위한 관점 - 오버라이딩 가능, 폴리모피즘 가능
2. 오버로딩(Overloading)
메소드 이름은 같지만, 메소드 인자값을 다르게 해서 같은 메소드 이름을 가져도 별개의 메소드로 보고 접근할 수 있게 하는 개념
3. 오버라이딩(Overriding)
상속을 받은 부모 클래스에서 정의한 메소드를, 자식 클래스의 특징에 맞게 로직을 덮어쓰기 해서 재구현하는 개념
4. 폴리모피즘(Polymorphism)
같은 그룹에 속하는 클래스들의 동일한 메소드를 호출 할 때 자식 클래스들이 저마다 다른 로직을 수행하고 리턴하는 것. 
폴리모피즘으로 구성할 때의 장점
1)관계의 의존성이 낮아진다.
2)클라이언트 클래스의 코드 변경 없이, 기능의 수정과 확장이 무제한으로 가능하다. 
폴리모피즘을 위한 원칙 3가지
1) 기능을 제공할 비슷한 종류의 클래스들을 모아 클래스 그룹으로 조직화한다.
2) 기능을 제공할 클래스 그룹의 인터페이스를 통일한다.
3) 클라이언트 클래스에서는 쓰고 싶은 클래스 그룹의 부모 클래스만 의존하고 자식 클래스를 인자로 넘겨받아 저장한다.
5. 캡슐화(Encapsulation)
속성을 숨기고 보호하는 캡슐화도 있지만 변하는 기능을 분리하여 어떤 틀 안에 숨기고 보호할 수 있는 캡슐화 개념도 있다. 
속성은 private으로 선언한다. getter 메소드를 만들어 getter 메소드로만 속성을 가져올 수 있게 한다. setter 메소드로 데이터를 제한적으로 조작하게 허용하거나, 아예 setter메소드를 제거하여 외부로부터 속성값의 조작을 금지한다. 
비슷한 기능을 하나의 객체에 모두 구현하려고 하는 경우, 하나의 클래스에 로직이 섞여서 객체가 지저분해진다. 그래서 유지보수나 기능확장이 어렵다. 그러나 분리가 가능한 기능을 별도의 클래스 그룹으로 캡슐화하면, 하나의 클래스에 필요한 최소한의 기능만 깔끔하게 구현되고, 모듈화한 다른 기능은 우리가 원하는 기능만 선택하여 사용하게 할 수 있다. 
6. 인터페이스(Interface)
인터페이스는 어떤 대상의 의미를 구현할 때 지켜야 할 규칙과 표준을 의미한다. 추상적인 개념의 의미를 완벽하게 구현하기 위해서는 제시하는 인터페이스를 지켜야 한다는 뜻이다. java 를 기준으로 클래스에 메소드 정의만 있꼬 속성이나 메소드 내부로직은 모두 제거되어 있는 것이 인터페이스이다. 인터페이스는 단독으로 어떤일도 할 수 없다. 어떤 클래스가 인터페이스를 상속받고, 구현해야 의미가 있다. 만약 인터페이스를 상속받았는데, 인터페이스에 명시된 메소드를 모두 구현하지 않으면 컴파일러에서 에러를 발생한다. 
인터페이스의 효과
. 다중 상속 효과가 가능하다.
. 인터페이스와 로직이 명확하게 분리된다.
. 인터페이스와 로직이 명확히 분리되어서 부모 클래스 코드가 깔끔해진다.
. 인터페이스와 로직이 명확하게 분리되어 보다 중요한 메소드 명세를 더 강조할 수 있다. 
. 인터페이스와 로직이 명확히 분리되어 외부에 노출할 필요 없는 로직을 캡슐화한다.
. 개발자 시야가 넓어져 나무보다 숲을, 로직보다 인터페이스 관점으로 볼 수 있다. 
한 개의 파일에(하나의 클래스에) 모두 개발하는 것
. 코드가 지저분해진다.
. 원하는 기능을 제공하는 객체/메소드/속성을 찾기 힘들다.
. 객체의 의존 일관성이 없어지고 복잡해진다.
. 객체지향의 장점, 디자인패턴을 적용하기가 어려워진다.
. 기능을 변경하거나 확장할 때 기존 코드를 직접 고쳐야 할 가능성이 높아진다.
. 사이드 이펙트가 높아진다. 
7. 위임(가로)Delegation
상속의 문제 : 자식 클래스 중 부모 클래스의 기능이 없어야 하는 경우가 발생할 경우, 그리고 그 경우가 수십 수백종류가 늘어날 경우. 즉, 기능 명세(인터페이스)는 정해진 것이 아니고 종종 변경될 일이 생길 것이라고 하는 경우 수많은 상속관계 클래스를 찾아 코드를 수정해야 한다. 상속은 상속관계를 끊지 않는 한 상속받는 것으로 고정되어 변경이 불가능하다. 이럴 경우 상속대신 위임을 한다. 변경되는 부분을 별도 클래스그룹으로 분리한 뒤 해당 인터페이스에만 의존한다. 그리고 이 클래스그룹의 객체를 속성으로 가진다. 
상속을 지나치게 사용하면 오히려 프로그램에 'code smell' 이 나는 경우가 생긴다. 이때는 위임 구조로 리팩토링하여 객체지향에서 본래 의도하는 유연성, 확장성, 유지보수 편리성을 다시 회복할 수 있다. 
"세로(상속)보다 가로(위임)로 접근하라"
[객체지향 구현 원리 5가지 - SOLID]
1. SRP(Single Responsibility Principle)
클래스는 분업화가 철저한 공장의 노동자와 같다. 공장이 잘 운영되려면 노동자는 오직 하나의 일만 해야 한다. 분업화된 공장은 노동자가 자기 일을 소홀이 하고 다른 일을 하는 즉시 전체 생산 시스템에 문제가 생긴다. 클래스는 오직 하나의 일만 수행해야 객체지향 공장의 생산성이 높아진다. SRP 단일 책임의 원리라고 한다. 객체가 제공하는 모든 기능은 단 하나의 책임을 수행하는 데 집중되어 있어야 한다. 각 클래스의 수정 이유가 오직 하나라면, 설계자는 단일 책임의 원리를 정확히 구현한 것이다. 이 명제를 확인하기 위한 CRC카드라는 방법이 있다.
______ 클래스에 대한 SRP 분석
_____ 가(이) 자신을 _____한다.
_____ 가(이) 자신을 _____한다.
_____ 가(이) 자신을 _____한다.
제목에 내가 만들고 싶은 클래스 이름을 적고, 그 아래 내가 계획한 메소드를 적어본다. 그 다음에 클래스가 SRP 규칙을 지키고 있는지 확인해본다. 
SRP 규칙을 지킨다는 것은 객체지향 개발에 있어 '깨진 창문 효과'를 예방하는 것과 같다. 
2. OCP(Open Closed Principle)
요구사항은 기존에 개발된 기능을 수정하는 건이 있다. 또는 새로운 기능을 확장하는 요구사항이 있다. 이럴 경우 개발자의 가장 직관적인 수정 방법은 기존 클래스 안 메소드의 내부 로직을 변경하는 것이다. 그러나 이것은 '사이드 이펙트'가 발생하기 쉽다. 예를 들어 A 클래스 그룹의 메소드가 예고도 없이 수정되었다면, 이 클래스 그룹을 사용하는 B클래스의 오작동이 발생할 수 있다. 현장에서 곤혹스러운 일이, 기존에 작동중인 코드를 수정하면 사이드 이펙트가 걱정되어, 기존 코드의 정상 작동유무, 사이드 이펙트 여부를 번거롭게 테스트해야 하는 상황이 발생한다. 
그래서 우리는 기존 클래스를 수정하지 않는 것이 좋다. 대신 새로운 클래스나 기능을 만들어 확장해야 한다. 
클래스는 기능확장에 대해서는 열려있지만, 코드 수정에 대해서는 닫혀있어야 한다. 
3. LSP(Liskov Subsitution Principle)
자식 클래스는 부모 클래스가 사용되는 곳(이 클래스 그룹을 사용하는 다른 클래스)에 대체될 수 있어야 한다. 상속과 폴리모피즘을 확실하게 적용하고 싶을 때 곱씹어야 할 중요한 원칙이다. 만약 자식클래스가 1,2,3 3개가 존재하는데 자식클래스3에만 메소드가 추가되었다고 생각해보자. 클라이언트 클래스는 자식클래스3의 인터페이스를 알 수 없다. 즉 자식클래스3은 부모 클래스가 사용되는 곳에 대체될 수 없으므로 LSP를 위반한 것이다. 그렇다고 클라이언트 클래스가 자식 클래스3을 직접 의존하는 것은 객체지향의 근본원칙(LSP 위반보다 더 심각한)도 위반하는 것이다. 이럴 경우 위임으로 문제를 해결한다. (상속,단순위임,위임)
상속, 단순위임, 위임은 어떨때 사용하는가?
단순 위임 : 은 클라이언트 클래스가 다른 클래스의 기능을 사용하지만, 사용하는 기능을 변경할 필요가 없을 때 사용한다. 단순 위임은 단순 위임을 해주고있는(기능을 제공해 주는) 클래스 기능이 변하지 않을 때 사용한다.
위임 : 만약 단순 위임을 해주고 있는 클래스의 기능을 다른 기능으로 교체할 수도 있는 요구사항이 있을 때는 자식 클래스를 만들어 교체할 수 있는 '위임'을 쓴다. 
상속 : 한편으로, 자식 타입들은 부모 타입들이 사용되는 곳에 100% 대체할 수 있다는 LSP 규칙을 지킬 수 있다면 '상속'을 사용해도 좋다. 
4. ISP(Interface Segregation Principle)
클래스는 자신이 사용하지 않는 메소드에 의존하면 안된다.
ISP 법칙은 SRP법칙과 비슷하다. SRP는 클래스 관점에서 클래스가 하나의 일만 해야 한다고 가이드라인을 제시한다. ISP는 인터페이스 관점에서 '클래스는 자신이 사용하지 않는 메소드에 의존하면 안된다'라는 인터페이스 사용 가이드 라인을 제시한다. 
5. DRY(Don't Repeat Yourself)/DIP(Dependency Inverion Principle)
DRY
중복되는 코드는 하나로 통합한다. 객체지향뿐만 아니라 모든 개발 방법론에서 권장하는 규칙이다. 객체지향에 맞게 풀어 쓰면 '공통부분을 추출하여 추상화하고 한곳에 두어 중복코드를 피하라' 이다. 이것이 DRY라는 코드 반복 금지의 원리이다. 중복된 코드가 존재하면,
1) 이 코드를 사용하는 클라이언트 클래스들은 어느 코드를 사용해야 할지 혼란스럽다.
2) 만약 개발자가 이 중복된 코드를 동시에 관리하지 못하고 하나의 코드만 관리한다면, 다른 중복된 코드는 추가 요구사항을 반영하지 못하고 이전 코드로 남게 되는 경우가 발생한다.
3) 그렇다면 두 코드를 사용하는 클라이언트 클래스 중 일부는 잘못된 코드를 사용하기 때문에, 조만간 버그가 발생한다.
DIP
Dependency Inversion Principle 직역하면 의존관계 역전 원칙이다. 구체적인 클래스 대신 추상적인 클래스에 의존하라는 뜻이다. 폴리모피즘의 원칙, 클라이언트 클래스에서는 부모 클래스만 의존하고 자식 클래스를 인자로 넘겨받아 저장한다와 동일한 원리이다. 

Chapter 4. 디자인패턴의 깊이

[화려한 동작을 많이 아는 것보다 중요한 동작 몇 가지를 깊게 익힌다]
디자인 패턴은 Gang of Four 라고 불리는 객체지향의 고수들이 창시했다. '객체와 객체간의 관계에서 반복적으로 발견되는 좋은 원칙을 끌어내 패턴으로 만들어낸 것' 이다. 디자인 패턴 카탈로그에는 23개 패턴이 존재한다. 그런데 주변을 보면 디자인패턴 중에 실제로 직접 써보거나 간접적으로 써본 경우는 한 자릿수를 벗어나기 힘들다. 그래서 자주 쓰는 디자인패턴을 골라 깊이를 파자고 말한다. 
"디자인패턴은 점(코드,함수,로직)의 재활용이 아니라 선(관계)의 재활용이다."

[Strategy pattern]
디자인패턴의 기본기 : Strategy pattern (보통 처음으로 배우는 디자인패턴)
클라이언트 클래스(컨택스트 객체) 가 클래스 그룹의 자식클래스에 의존하지 않는 설계. Strategy Pattern 은 위임을 활용. 위임은 메소드의 실제 구현을 다른 클래스에 위임하는 것. 클라이언트 클래스는 오직 strategy 클래스만 의존하고 strategy 클래스를 상속받는 자식클래스를 자유롭게 변경,확장,수정할 수 있다. 이때 클라이언트 클래스의 코드수정은 없다. 
적용예시 ) 파서(client) -> 기본 자료 구조(parent class) - XML파서(child class), JSON파서(child2), TEXT 파서(child3)
[State pattern]
바뀌는 상태를 캡슐화 하는것. 상태 변경 관련 로직을 유연하게 개발하는 설계. strategy pattern 과 클래스 구성도가 거의 같다. 하지만 strategy pattern 은 교체 가능한 알고리즘을 캡슐화 하고 클라이언트가 사용하고 싶은 알고리즘을 취사선택해 인자로 넘긴다. 반면 state pattern 은 대상 객체의 상태를 변경할 때 쓰인다. 주로 수많은 if문을 집어넣을 상태 처리 로직 대신에 사용하는 패턴이다. 보통 클라이언트 클래스의 메소드 명세를 똑같이 구현하는 state 클래스 그룹을 만들어 통째로 위임한다. 마치 해당 클래스가 통째로 state 클래스로 바뀌는 효과가 일어난다. 
적용예시 ) 게임에서 캐릭터들의 상태에 따른 행동변화, TCP등의 네트워크 통신 상태 변경 등
[Template method pattern]
제어 흐름을 '일관성 있게 통제' 하는 설계. 프레임워크에 전반적으로 사용된다. 거의 바뀌지 않는 것을 바뀌는 것으로부터 분리해서 보호한다. 보호해야 할 것은 '제어 흐름'이다. Template method 패턴은 프레임워크에서 개발자가 정형화된/일관된 코딩을 하도록 유도해야 할 경우 많이 쓰인다.  이 패턴은 '표준 메뉴얼'처럼 프레임워크 설계자(개발 책임자/아키텍트)가 원하는 방식으로 개발을 유도한다. 여러 개발자들과 협업할 때, 일관성 있는 개발을 끌어내기 좋은 패턴이다. 
[Decorator pattern]
데코레이터 클래스 그룹이 부모클래스를 상속받아 부모클래스의 인터페이스와 동일하다. 부모객체를 전역변수로 가지고 있어서 데코레이터에 데코레이터를 추가하면 추가한 데코레이터의 기능이 같이 실행된다. 관련 데코레이터를 무제한 추가할 수 있다. 데코레이터 생성자에 부모클래스를 인자로 받아 저장한다. 인자로 받은 객체의 기능을 호출하면서 추가기능을 덧붙인다.
데코레이터 역할을 하는 클래스는 모두 같은 클래스 그룹에 속한다. 그래서 어떠한 객체라도 심지어 데코레이터들끼리도 인자로 받아들일 수 있고 재귀적으로 실행할 수 있다. 이때 쓰인원칙이 OCP이다

Chapter 5. 한 점 보기

[객체지향의 한 점]
Gang of Four 와 같은 객체지향 고수가 있고 다른 고수들도 있다. 객체지향은 주어진 문제를 좋은 알고리즘으로 해결하는 능력에서 더 나아가 낮은 관계의 의존성과 높은 기능의 집중도를 가진 유연한 소프트웨어를 만드는 능력이다. 즉 기능보다 관계 중심 접근법이다.
기능은 변한다. 그러나 객체간의 관계는 거의 변하지 않는다.
변하는 부분을 변하지 않는 부분으로부터 분리한다.
[가족문파, Objective-C와 스프링 프레임워크]
아이폰 앱 개발은 objective-c가 기반이다. 최근 등장한 swift는 객체지향과 함수형 언어를 같이 쓴다. objective-c에서 일관되게 잘 쓰는 패턴이 있다. Delegator패턴이다. 이 패턴이 중요한 사상이 되어 아이폰개발에 적극적으로 사용된다. 템플릿 메소드 패턴과 유사하다. 템플릿메소드는 상속으로 접근했고 objective-c delegator 패턴은 위임으로 접근했다.
[스프링 프레임워크]
java기반 프로젝트에사 스프링 프레임워크를 쓰지 않는 곳은 드물다. 바탕에는 IoC기법이 있다. 이 기법은 Strategy 패턴을 어떻게 구성할까 깊게 고민하지 않고, 단지 XML등의 설정으로 편하게 구현할 수 있다. 객체지향 고급기법을 알고 싶으면 하기 키워드로 찾는다.
책임주도 설계, 도메인 모델, 디자인 패턴(패턴을 다 다룬 책), 리팩토링, 테스트 주도 개발(TDD), 스프링 프레임워크
[전통의 문파,RDB]
관계형 데이터베이스 모델링/튜닝은 잘 설계하고 SQL을 효율적으로 튜낭하는 방법론 혹은 기법이다. 관계형 모델보다 객체지향이 나중에 등장했다.
데이터를 다루는 것은 RDB가, 소프트웨어의 움직임을 다루는 것은 객체지향과 함수형 프로그래밍이 양축으로 되어 명성을 유지할 것이다.
관찰, 추상화, 패턴인식 사고도 RDB할 때 도움이 된다.
[신생문파, 함수형 언어]
객체지향은 움직이는 부분을 캡슐화하여 코드 이해를 돕는다. 함수형 언어는 움직이는 부분을 최소화하여 코드 이해를 돕는다.
함수형언어는 사이드 이펙트를 최대한 멀리한다. 그 방법은 순수함수를 만드는 것이다. 순수함수란 동일한 인자가 들어오면 항상 동일한 값을 리턴하는 함수이다. 함수형 언어가 객체지향을 대체할까? 대부분 공존할 것이라 한다. 지금까지 흐름으로 JAVA,Swift,Kotlin 도 양쪽개념이 공존한다.
객체지향은 움직이는 부분을 캡슐화하여 코드 이해를 돕는다.
함수형 언어는 움직이는 부분을 최소화하여 코드 이해를 돕는다.

[독후한줄평]
실무에서 치열하게 살아옴에도 역량강화를 끊임없이 실천하고 바쁜와중에 무술도 연마하시면서 이해가 쉽도록 무공으로 빗대어 예를 들어주신 저자 김동헌님께 감사드린다. 저자가 다른 책을 낸다면 무조건 사 볼 의향이 있다. 여타 많은 지식서적처럼 거드름 피우지 않고 자신의 시행착오를 솔직히 밝히며 개발철학을 토해내듯 서술한 책을 만나는 일은 인생에서 자주있는 기회가 아니다. 이 책의 유일한 단점은 촌스러운 표지다.




참고출처 : https://mpjamong.tistory.com/17

HANA STUDIO 설치
support.sap.com 접속 후 [SAP Support Potal] - [Software Downloads] 접속
Hana studio 검색 후 Windows 10에 맞는 설치 파일 다운로드
Sapcar 검색 후 OS에 맞는 설치 파일 다운로드 (sapcar는 sar 파일 압축 해제 Utility)
설치 파일 리스트
- HANA STUDIO 설치 파일 : IMC_STUDIOS2_(최신버전).SAR
- SAR 파일 압축해제 도구 : SAPCAR_(최신버전).EXE

 

아래는 설치과정 캡처참고

help.sap.com 에 다운로드 및 설치 방법이 안내되어 있다

HANA Studio 2 다운로드 

SAPCAR 다운로드 (SAR 파일 utility)

파일 동일 경로에 위치하고 압축해제
command : path>SAPCAR_XXX.exe -xvf IMC_STUDIO2_XXX.SAR

압축해제된 폴더
C:\>program files> 에 설치시 관리자권한으로 수행하지 않을경우 권한으로 인한 에러가 발생할 수 있음

hdbsetup.exe 실행하여 설치시작

HANA Studio 가 설치되면 HANA 관련 tool 을 수행할 수 있는 상태로 eclipse + plug in 이 설치된다.

hana studio 로 기본 software가  설치된 상태

ABAP 을 개발하기 위해서는 ADT 추가 plug-in 을 설치해야 하고 그 이전에 eclipse 버전을 확인하여 버전에 맞는 plug-in을 설치해야 한다

이클립스 버전 확인 아래의 경우 2022-11 버전

tools.hana.ondemand.com 에서 eclipse 버전별 설치가능 tool 확인

버전을 확인했으면 새로운 plug-in 설치

버전에 따른 url 을 입력하면 설치가능한 tool 목록이 검색됨

설치가 완료되면 재시작

perspective 에 설치된 ABAP, BW Modeling 등이 표시됨

'SW > ABAP' 카테고리의 다른 글

YSOURCEDOWN  (0) 2024.03.28
YFILESHARING  (0) 2024.03.27
ABAP OOP method 호출방법  (0) 2017.08.08
picture 조회 안되는 현상 조치  (0) 2017.06.05

작가 : 자청
출판 : 웅진 지식하우스

95%의 인간은 타고난 운명 그대로 평범하게 살아가는 순리자이다.
5%의 인간은 운명을 거스르고 인생의 자유를 얻고 경제적 자유를 누리는 역행자이다.
인생에도 컴퓨터 게임처럼 공략집이 있으며 치트키를 써서 인생을 혁신적으로 바꿀 수 있다. 
'역행자의 7단계 모델'은 저자의 10년의 시행착오를 3년으로 줄일 수 있는 치트키가 담겨 있다.
저자는 가난하고 못생기고 공부도 못했지만 30대에 자수성가하여 수백억원대 자산가가 되었다.

22법칙과 운동
- 하루 2시간 책을 읽거나 글을 쓰고, 나머지 시간은 쉰다. 뇌를 업그레이드 하는 최고의 방법
- 하루 한 번, '5분 생각'의 시간을 갖는다. 이 여백의 시간을 통해 매일 복리로 좋은 결정이 쌓인다.
- 적극적으로 논다. 7시간 이상 숙면한다. 노는 것은 인간의 행복과 건강에 필요하고 창의성의 원천이다.
- 책을 읽기 싫다면 1주일에 하루 30분만 읽자. 이런 차이는 훗날 나비효과처럼 극적으로 되돌아온다.

1단계 자의식 해체
대다수의 사람들은 자의식의 꼭두각시 줄에 놀아난다. 이 끈을 잘라내야만 자유로 전진할 수 있다.
자의식은 인간에게 필수적인 심리기제지만, 자유로 가는 거의 모든 길목에서 사람들을 방해한다.
자의식은 지독하다. 몇십만 년을 인류와 함께해온 끈질긴 본능이다. 유전자가, 타고난 본성이 자의식을 키운다.
자의식 해체 3단계
- 탐색 : 종종 누군가의 발언이나 존재에 불쾌함을 느낀다면 원인이 '자의식' 때문은 아닌지 알아본다.
- 인정 : 질투인가? 이유없이 빈정 상하는 건, 의식하지 못할 뿐 무의식이 발동한 것일 수 있다.
- 전환 : 과도한 본능으 물결을 잠재웠으니 나에게 유리한 방향으로 튼다. 나의 열등감을 거꾸로 이용한다. 
지나친 자의식과 모자란 자존감은 '매일 게임으로 인생을 허비', '인스타에 맛집사진으로 돈과시간낭비', '주말 동호회로 돈쓰고 가족에겐 인색', '포털뉴스나 커뮤니티에서 방구석평론가와 키보드배틀' 과 같은 유형으로 주변에서 흔히 볼 수 있는 현상으로 나타난다. 

2단계 정체성 만들기
뭔가를 더 잘하고 싶으면 결심을 할 게 아니라 환경부터 만드는 것이다. 자유의지니 노력이니 진정성이니 따위의 허망한 말 대신, 나를 훈련시킬 운동장을 만들어 스스로를 밀어 넣는 게 핵심이다. '나는 OO가 된다' 라는 결심을 종이에 100번 씩 쓰거나 벽에 붙어둔다. "이게 뭔 짓거리야"하며 불신감이 들겠지만 정체성을 변화시키는 매우 순쉬운 전략 중 하나다. 무의식이 깊이 각인될 것이다. 무의식을 바꾸지 않은 상태에서는 어떠한 것도 이룰 수 없다.
무언가가 되고 싶으면, 나 스스로를 믿기보다 환경 설정을 더 중요시하라. 인간의 심리와 본성을 이해하고 인간이 어떤 매커니즘으로 움직이는지 이해하면, 나를 이해할 수 있고 상대를 이해할 수 있다. 

3단계 유전자 오작동 극복
1.4킬로그램의 회백질 덩어리. 뇌는 현대 과학이 아직도 해결하지 못한 미스터리다. 
폴 매클린이라는 신경과학자는 인간뇌의 진화를 3단계로 구분. 파충류의 뇌(소뇌/생존), 포유류의 뇌(변연계/감정), 인간의 뇌(신피질/이성) 로 구성
진화의 목적은 완벽함이 아니라 생존이다. 진화는 합리적이거나 계획적이지 않다. 돌연변이가 일어난 후 자연선택에 의해서 검증받는다. ("우연이 제안하고, 자연이 처분한다")
유튜브 열풍이 불면서 "나도 이제 유튜브 하려고"라고 말하는 사람 100명중에 정말 시작하는 건 3명이 될까 말까다. 인간은 새로운 도전을 꺼리도록 진화했기 때문이다. 유전자의 오작동을 극복해야 한다.
생존에 필요한 편견 클루지는 현대에 와서는 대부분 쓸모 없을 뿐 아니라 역효과를 낸다. 이럴 때마다 스스로 질문을 한다.
질문1. "사람들의 눈치 보면서 '판단오류'를 범하고 있지는 않은가?"
질문2. "지금 나는 새로운 것을 배우는 데 겁을 먹고 있나?"
질문3. "손해를 볼까 봐 너무 과도한 스트레스를 받는 게 아닐까?"

4단계 뇌 자동화
저자의 스무살에는 IQ가 109에서 스물아홉에는 125, 서른넷에는 136이었다고 한다. 어릴 적 들어본 "뇌세포는 죽기만 하지 새로 생기진 않아"라는 말은 잘못되었다. 최근 신경 가소성이론이 등장하며 뇌는 근육처럼 단련으로 발달한다. 
뇌 최적화 1단계, 22전략
2년간 하루 2시간 책읽기나 글쓰기 2가지 실천하기. 
뇌 최적화 2단계, 오목이론
인생도 오목처럼 '의사결정'이라는 돌을 두는 게임과 같다. 포석에 따라 승패가 급격히 기운다. 사업이든 투자든 실패하는 사람들을 보면 당장 내일 인생이 끝날 것처럼 너무 조급해한다. 이처럼 눈앞의 이득과 소득에 집착하지 않고 장기적으로 두는 수를 오목 이론이라 부른다. 당신도 자신의 수를 놓아라. 
뇌 최적화 3단계, 뇌를 증폭시키는 3가지 방법
22전략, 오목이론에 의해 뇌를 새롭게 프로그래밍했다면 뇌를 활성화하여 부스터를 단다.
1. 안쓰던 뇌 자극하기 : 아이디어가 필요하거나 문제에 부닺히면 새로운 것을 경험. 운동, 과학, 음악 등
2. 안 가본 길 걷기 : 1주일에 두번 정도의 운동은 몸의 노화를 막고, 행복도를 높이며, 창의성과 의사 결정력을 높여주고 대부분의 우울증을 치료해준다.
3. 충분한 수면 : 학자들읜 최소 8시간 이상 수면을 권장, 뇌가 최대치의 성능을 낸다. 잠을 줄이는 것은 비효율의 극치다. 낮잠은 30분 이내로 렘수면상태에서 깨야한다. 인간은 잠을 잘 때, 그날 일어난 일들을 정리해 장기기억으로 전환한다. 


근육 단련법
1. 한번에 8개 정도 들 수 있는 중량을 3세트 반복한다. 8개 들었다놨다. 2번 쉬고 3번 반복
2. 단백질을 섭취
3. 48~72 시간 휴식하여 근육회복 및 성장기간 확보

운동 실패하는 이유
1. 음식섭취를 제대로 하지 않는다.
2. 매일 1~2시간씩 무리한 운동을 하다가 힘들어서 포기한다(3세트만 해도 되는 운동을 10~20세트씩 함)
3. 근육 휴식 시간이 중요한데, 이를 어긴다.
4. 프로 보디빌더에게나 필요한 운동 방식을 따라한다.
5. 어떤 운동방법이 효율적인지 모른다.

경제적 자유를 얻는데 실패하는 이유
1. 자의식대로 살아간다.
2. 남이 성공했다고 하는 방식을 그대로 따라한다.(3시간 수면, 미라클 모닝, 말도 안될 정도의 '노오력' 등)
3. 뇌 최적화를 소홀히 한다,아니 무시한다.
4. '간절히 믿으면 우주가 도와준다' 따위의 자기최면만 강화할 뿐, 효과 있는 실천을 하지 않는다.
5. 책에 정답이 있다는 걸, 즉 책이 곧 공략집이라는 걸 알지 못한다.

5단계 역행자의 지식
기버이론_역행자는 1을 받으면 2를 준다.
부자와 가난한사람은 기버이고, 중간은 테이커나 매처이다. 저자는 주변에 인색한 사람 중에 젊은 나이에 경제적 자유를 얻은 사람을 한 사람도 본 적이 없다. 인색한 사람들은 정성이 엇는 거지 돈이 없는 게 아니다. 다만 받은 만큼만 갚는 매처나 받기만 하는 테이커를 잘 구별해서 피해야 한다. 겉모습만으로는 이들을 알아내기 힘들때가 많다. 그동안 관찰한 테이커나 매처는 공감 능력이 떨어지거나, 자기합리화가 심하거나, 남에게 피해를 입히는 등의 비윤리적인 행동을 곧잘 하곤 했다. 
- 지난 1년간 자신이 어떤 기버 행동을 했는지 기억해보라. 책을 덮고 10분간 산책을 나가서 생각에 잠기는 것도 좋다.
- 최근에 본인 인생에 가장 큰 영향을 준 사람에게 카카오톡 선물하기를 통해 선물을 보내거나 돈을 송금하라. 혹은 상대가 어려워 보이는 점이 있다면 나름대로 해결책을 적어서 보내주어라. 
확률게임_역행자는 확률에만 베팅한다.
인간은 이득보다 피해에 대해 과도하게 생각하는 '손실 회피 편향'이 있다.
-최근에 했던 의사 결정이 확률 게임을 따른 것인가? 아니면 손실 회피 편향의 영향을 받은 것인가?
-당신의 인생에서 성공적이었던 확률 게임으로는 어떤 것이 있었나? 3~4줄 정도 적어보자.
타이탄의 도구_유전자에 각인된 장인 정신을 역행하라. 
인간은 본래 제대로 배운 일 하나를 죽을 때까지 하도록 설계되어 있다. 상위 1퍼센트가 된다는 건, 타고난 재능에 노력이 합쳐져야 가능한 일이다. 하지만 상위 20퍼센트 정도 능력을 몇가지 조합하면 0.1퍼센트를 이길 수 있다. 예를 들면
1. 온라인 마케팅 (블로그, 인스타그램, 스마트스토어) 2. 디자인 3. 동영상 편집 기술 4. PDF책 제작과 판매 5. 프로그래밍
메타인지_주관적인 판단은 순리자들의 전유물이다.
'자신을 객관화할 수 있는 능력' 이 메타인지다. 이렇게 자기 객관화가 잘 되면 의사 결정력이 전반적으로 높아진다. 유명한 더닝크루거 효과다. 지식이 얕은 사람일수록 자기가 뭘 모르는지 몰라 자신만만한 반면 꽤 실력이 있는 사람은 오히려 지나치게 겸손하다. 메타인지를 높이기 위한 2가지 독서와 실행력이다. 
사업을 좋아하는 이유는 돈 때문만이 아니다. 사업은 내 판단력을 눈으로 확인할 수 있는 방법 중 하나이기 때문에 너무나 재밌다. 직접 부딪치는 과정을 통해 본인이 얼마나 보잘것없는 존재인지 인지하면서 뇌를 최적화해야 한다. 단순히 책에만 빠져 관념 속에 살아가는게 아니라 실행을 통해 실패하며 자신의 위치를 정확히 파악해야 한다. 
실행력 레벨과 관성
100명 중의 한 사람은 늘 능동적으로 움직인다. 이 사람은 시키지 않아도 무언가를 실행한다. 이 결단과 실행이 10번, 100번 반복되어 관성을 얻으면 인생이 참 쉬워진다. 한번 추진력을 얻은 관성은 반복적인 실행을 낳는다. 당신이 아침에 일어나서 세수하러 가고 머리를 감듯, 실행 자체가 습관이 된다. 

6단계 경제적 자유를 얻는 구체적 루트
돈을 버는 근본 원리
- 상대를 편하게 해주기
- 상대를 행복하게 해주기
이 2가지야말로 사업과 투자의 시작이자 끝이다. 
경제적 자유라는 성을 함락시키는 방법
시간을 들여 돈을 벌면 평생 경제적 자유를 얻기 힘들다. 돈이 돈을 버는 시스템을 갖춰야 한다. '병사', '장수', '지휘자'에서 가급적 장수로 시작하는 것이 좋다. 갑자기 매월 수천만 원 씩 버어들이는 장수, 부대지휘자가 되라는 말이 아니다. 월 30만원, 100만원, 아니 5만원도 좋다. 작은 병사들을 만들어서 경제적 자유라는 전투에 참전시켜라. 
당신이 직장인이든 백수든 열아홉이든 쉰이든
직장생활로 시작했든, 일용직 노동자로 시작했든, 경제적 자유에 이르는 전략은 결국 2가지로 귀결된다. 사업과 투자
당신이 직장인이든 백수든, 열아홉 살이든 쉰 살이든 상관없이 다음 방법으로 투자와 사업을 준비하는 게 최고의 방법이라 생각한다.
경제적 자유를 위한 5가지 공부법
1. 정체성 변화
    9년간 대기업에서 3000만원을 모았던 너나위는 재테크 코너를 볼때마다 투기꾼들의 이야길 치부하다가 상사가
    해고당하는 것을 보고 충격을 받아 투자책을 읽고 생각이 완전히 바뀌었다. 3년 후 너나위는 순자산만 20억원을 모으게
    된다.
2. 20권의 법칙
    창업을준비하면서 마케팅 책 20권을 쌓아두고 읽어나갔다. 온라인 마케팅은 물론 무의식 마케팅에 대해서도 이해할 수
    있었다.
3. 유튜브 시청
    영상은 책 읽기 보다는 뇌 최적화 측면에서나 학습측면에서나 효율성이 많이 떨어짐. 대신 뇌를 덜 서도 된다는 장점
4. 글쓰기를 통한 초사고 세팅
   - 블로그에 '경제적 자유를 위한 5가지 공부법'이라는 주제로 글을 써보라.
   - 잠자기 전에 10분간 타이머를 켜고, 오늘 했던 생각 중 하나를 글로 정리해보라.
5. 온라인을 넘어 오프라인 학습으로
   뭐든 배울 때 돈을 좀 써야 한다. 
   온라인 강의 : 클래스101, 탈잉, 라이프해킹스쿨, 클래스 유 등
   오프라인 강의 : 온오프믹스 이용했었음. 5년 전쯤 '마케팅 대행사 만들기', '인스타그램 홍보하기' 등의 강의를 들었었음.
젊은 부자들은 어떻게 공부했을까
30대 전후로 경제적 자유를 얻은 친구들에게 확인해보고 분석하니 아래 3개 범주에 들어갔으며, 예외는 없었다.
1. 좋은 유전자와 환경을 타고난 경우
2. 주말 세미나형
3. 책 덕후형 
경제적 자유로 가는 알고리즘 설계
인간은 누구나 아래 4가지 그룹에 속해 있다.
1. 직장인 그룹 : 대기업 직원, 중소기업 직원, 공무원 등
2. 무스펙 그룹 : 일용직 노동자, 경력 단절 구직자, 백수 등
3. 전문직 그룹 : 의사, 변호사, 디자이너, 마케터, 부동산 중개인, 심리상담사, 에어컨 청소 기술자 등
4. 사업자 그룹 : 자영업자, 무자본 창업자, 유자본 창업자 등
대기업 : 취업 -> 대기업 -> 투자 -> 사업
중소기업 : 취업 -> 중소기업 -> 사업 -> 투자
유자본 창업 단계의 예시
1. 역행자의 7단계 모델을 그대로 해본다.
2. 카페를 창업한다면, 카페 관련 서적 20권을 읽는다. 고깃집을 창업한다면 관련 서적과 마케팅 책을 20권 도파한다. 이것만으로도 동네에선 질 수 없는 게임이 시작된다.
3. 인스타그램, 블로그, 유튜브 등 광고할 수 있을 만한 플랫폼에 대해 공부한다. 관련 책을 봐도 좋고, 강의를 들어도 좋다. 큰 기대 없이, 간단히 책에 나온 마케팅 방식들을 조금씩 실행해본다. 내가 쓴 글 중 하나인 '스마트플레이스 밸런스이론'을 네이버에서 검색해보자.
4. 끝났다. 사실 1,2,3번을 실천하는 자영업자는 없다. 이것만 열심히 해도 동네에선 상위 10퍼센트에 들 것이다. 
어차피 뭔가를 실행해보지 않으면 크게 와 닿지 않고 금세 휘발될 것이다. 일단 완전한 지식으로 만들기 위해 각 루트별로 요약 정리해 생각을 작성해보자. '경제적 자유에 이르는 데에도 추월차선이 있구나' 정도만 인식해도 이 글의 목적은 달성했다고 본다. 

7단계 역행자의 쳇바퀴
죄를 짓고 영원히 일평생 돌을 올리는 형벌을 받는 '시시포스' 우리의 인생도 이와 다르지 않다. 왜 인간은 만족하지 못할까? 바로 도파민 때문이다. 우리는 목표를 설정하고 이를 이루는 과정에서 스트레스와 쾌락을 같이 얻는다. 결과를 내면 도파민이 분비되면서 행복감을 느낀다. 하지만 이 감정은 오래가지 않는다. 뇌는 인간을 쉬게 만들지 않는다. 도파민을 달라고 채찍질을 한다. 
인간이 시시포스와 같이 불행해지는 이유는 간단하다.
원인 1. 성장하는 방법을 모른다.
원인 2. 자원에 대한 압박을 받는다.
원인 3. 성장이 멈춰 열등감이 반복적으로 쌓인다. 
자청 왈 ''돈이 행복을 보장하진 않는다. 다만 인생의 자유를 보장할 확률은 높다"

추천도서
Level1 : 부자의 그릇, 인스타브레인, 장사의 신
Level2 : 나는 돈이 없어도 사업을 한다. 나는 4시간만 일한다. 당신은 사업가입니까. 당신의 뇌는 최적화를 원한다. 더 시스템, 러쉬!. 미치지 않고서야. 부의 추월차선, 스틱!, 언스크립티드, 오랜된 연장통, 최강의 인생
Level3 : 뇌, 욕망의 비밀을 풀다. 생각에 관한 생각. 욕망의 진화. 정리하는 뇌. 지능의 역설. 클루지

유튜브 참고
1. 유튜브 섬네일 2개가 있다고 생각해보자. 어떤걸 선택하겠나
- 인생을 바꿔준 책 5권
- 오타쿠 흙수저를 10억 연봉자로 만들어준 책 5권
2. 잘된 유튜버들의 모든 썸네일과 초반 10초 분석
3. 유튜브 알고리즘 탭댄스 pdf  확인
4. 유튜브 편집 기술 <- 예전에 정리해 둔 것.
5. 온라인 마케팅 수업 1주일간 배움 or 온라인 마케팅 책 읽기 or 구글에서 키워드 검색 or 이상한마케팅 웹사이트 글 읽기
블로그마케팅에 대한 공부법 별거 없다. 관련 책 10권 읽어라. 나도 10권 읽으면서 그 책들이 공통으로 강조하는 것을 모두 흡수했다. 그게 끝이다. 당신이 잡고 싶은 키워드를 제목에 넣고 본문에 다섯 번 반복해서 써라. 



1. 아이 말을 중간에 끊지 마세요.
부모에게 거절 당했다는 생각에 자신감을 잃게 됩니다.

2. 따뜻한 눈길로 바라봐 주세요.
학습지도나 밥 차려주기는 다른사람도 할 수 있지만 진심 어린 사랑 표현은 부모만이 할 수 있어요.

3. 여러사람 앞에서 나무라지 마세요.
누구나 망신을 당한 기억은 잊고 싶어 하기 때문에 아이의 잘못된 행동을 고치는 데에는 오히려 방해가 됩니다.

4. 때리지 마세요.
부모에게 맞으면 아이는 세상이 안전하지 않은 곳이라고 느끼게 돼요. 체벌의 90% 이상은 부모가 자기 감정을 다스리지 못한 결과랍니다.

5. 버릇없이 키우지 마세요.
안되는 건 안된다고 딱 잘라 얘기 하세요. 소리 지르지 않고도 얼마든지 단호하게 이야기 할 수 있습니다.

6. 지키지 못할 약속은 절대 하지 마세요.
사실이 아닌 말로 그 순간만 모면하려고 하면 아이는 부모를 믿지 못하게 됩니다.

7. 아이가 할 수 있는 일을 대신 해주지 마세요.
시행착오를 통해 스스로 배울 수 있는 기회를 빼앗는 행동입니다.

8. 자녀에게 사과하는 것을 부끄러워 마세요.
아이들은 부모를 쉽게 용서해준답니다.

9. 아이가 "엄마 아빠 정말 미워"라고 화낼 때 너무 속상해 하거나 같이 화내지 마세요.
아이가 속마음을 표현하지 않게 됩니다.

10. 아빠들은 아이와 보내는 시간의 양보다 질을 더 신경 쓰세요.
일주일에 한 번을 놀더라도 진심으로 아이를 이해하고 공감하는게 훨씬 중요해요.

'Life' 카테고리의 다른 글

세이노의 가르침 인터뷰  (1) 2023.07.27
월급쟁이 투자 방법  (0) 2022.02.22
간헐적 단식 유용한 경험담  (0) 2022.01.10
일론 머스크의 5단계 엔지니어링 원칙  (0) 2021.09.14
연금저축펀드 (feat 홍춘욱)  (0) 2021.08.19

+ Recent posts