<객체지향의 사실과 오해> 4.역할, 책임, 협력
·
🖥️ 컴퓨터 일반/🎻 객체지향
1. 협력협력은 요청으로부터 시작되며 다수의 요청과 응답으로 구성된다 2. 책임책임의 분류1️⃣ 객체가 무엇을 알고 있는가 -> 아는 것(knowing)- 개인적인 정보에 관해 아는 것- 관련된 객체에 관해 아는 것- 자신이 유도하거나 계산할 수 있는 것에 관해 아는 것 2️⃣ 객체가 무엇을 할 수 있는가 -> 하는 것(doing)- 객체를 생성하거나 계산을 하는 등의 스스로 하는 것- 다른 객체의 행동을 시작시키는 것- 다른 객체의 활동을 제어하고 조절하는 것 📍 책임과 메시지메시지 전송(message-send)- 객체가 다른 객체에게 주어진 책임을 수행하도록 요청을 보내는 것- 협력 안에서 객체는 다른 객체로부터 요청이 전송됐을 경우에만 자신에게 주어진 책임을 수행한다- 한 객체가 다른 객체에게 전..
<객체지향의 사실과 오해> 3.타입과 추상화
·
🖥️ 컴퓨터 일반/🎻 객체지향
1. 추상화를 통한 복잡성 극복📍 추상화의 목적- 단순화- 복잡도를 다루기 위해 추상화한다📍 추상화의 정의- 어떤 양상, 세부 사항, 구조를 좀더 명확하게 이해하기 위해 특정 절차나 물체를 의도적으로 생략하거나 감춤으로써 복잡도를 극복하는 방법📍 추상화 방법 2가지1. 구체적인 사물들 간의 공통점은 취하고 차이점은 버리는 일반화2. 중요한 부분을 강조하기 위해 불필요한 세부사항을 제거- 객체지향에서는 객체라는 추상화를 통해 현실의 복잡성을 극복한다 2. 객체지향과 추상화📍 앨리스의 추상화 예시- 하트 여왕, 스페이드 정원사, 클로버 병사 등을 모두 트럼프 객체로 단순화(토끼는 트럼프로 추상화 불가)- 트럼프로 단순화할 수 있는 이유는, 위의 모든 인물들이 트럼프의 일반적인 외형과 행동방식을 지녔기..
컴퓨터 그래픽스 3장: 모델링
·
🖥️ 컴퓨터 일반/🕹️ 컴퓨터 그래픽스
📍Polygon Mesh모델링: 렌더링할 물체를 만들어 내는 것- 어떤 구체를 모델링한다고 할 때, 반지름과 원점을 이용해 구의 부피를 구하는 방정식을 사용할 수도 있지만,- GPU는 polygon mesh를 사용하는 방법에 더 최적화되어 있음- 즉, 구체를 이루는 정점 몇개를 샘플링해서 이들을 연결하는 방식 triangle mesh- polygon mesh 중에서 가장 널리 사용되는 방법- OpenGL은 triangle mesh만 처리함- 정점 갯수의 대략 2배 만큼 삼각형 메쉬가 있다 vs 사각형 메쉬- 모델링 시 사각형 메쉬가 유리할 때도 있다- 사각형 메쉬 -> 삼각형 메쉬 변환 간단 (2로 나누면 됨) 해상도- 정점의 갯수(resolution)- LOD(Level of Detail)라고도 함-..
컴퓨터 그래픽스 2장: 수학 기초
·
🖥️ 컴퓨터 일반/🕹️ 컴퓨터 그래픽스
📍행렬과 벡터m * n 행렬 형태- m: 행(row)- n: 열(column)- 벡터도 행렬이다 (예 1 * 2 행렬, 1 * 3 행렬) row vector- 2D 벡터: (x, y)- 3D 벡터: (x, y, z) column vector(xyz) - vector의 곱셈은 행렬의 곱셈과 같다 행렬 전치(transpose)행렬 곱셈 M * v 는 vt * Mt 와 같다- 조건- 곱셈 결과OpenGL의 곱셈 방식- column vector 사용하므로, 행렬벡터 곱셈 시, 벡터가 행렬 뒤에서 곱해짐- 참고로 Direct 3D는 row vector 사용하므로 반대 단위 행렬과 특징행렬곱셈의 역행렬과 전치행렬 벡터의 크기(길이)- 원점에서의 거리- 벡터를 벡터의 길이로 나누는 과정을 정규화(normalizat..
컴퓨터 그래픽스 1장: 서론
·
🖥️ 컴퓨터 일반/🕹️ 컴퓨터 그래픽스
📍3D Computer Graphics- 3차원으로 표현된 오브젝트를 입력으로 받아 2차원 이미지들(프레임이라고 부름)로 출력해내기 위해 다양한 계산을 수행하는 것📍실시간 그래픽(real-time graphics)- 비실시간 그래픽(느리게 프레임 만듬, 예 - 영화 특수효과)과 대비되는 개념- 프레임이 온라인에서 출력되고,- 최소 30 fps(frames per second)이 넘을 때- 예) 게임, VR, AR 등📍Computer Graphics Production 과정off-line tasks (by artists)____________________________modeling -> rigging -> animation -> rendering -> post-processing          ..
ch3. 명령어
·
🖥️ 컴퓨터 일반/💾 컴퓨터 구조
1. 소스 코드와 명령어📍고급 언어와 저급 언어고급 언어(일반적인 프로그래밍 언어)로 작성된 소스 코드가 실행되려면 반드시 저급 언어(컴퓨터만 이해할 수 있는 명령어)로 변환되어야 한다 저급언어 종류- 기계어- 어셈블리어 기계어- 0, 1(이진수)로 이루어진 명령어 모음- 가독성을 위해 십육진수로 표현하기도 함 어셈블리어- 기계어를 사람이 어느정도 이해할 수 있게 번역- 하드웨어와 밀접한 분야에서는 실제로 사용 (임베디드, 보안 등)- 예시 📍컴파일 언어와 인터프리터 언어고급 언어가 저급 언어로 변환되는 방식에 따라 언어를 2가지로 나눌 수 있음- 컴파일 언어- 인터프리터 언어 컴파일 언어- 컴파일러에 의해 소스코드 전체가 저급 언어(결과물 - 목적 코드)로 변환되어 실행됨- 소스 코드에 오류가 있다..
ch2. 데이터
·
🖥️ 컴퓨터 일반/💾 컴퓨터 구조
1. 0과 1로 숫자를 표현하는 방법📍정보 단위컴퓨터는 0과 1밖에 이해하지 못함- 비트(bit): 0과 1을 나타내는 가장 작은 정보단위- n비트는 2^n 개의 정보 표현 가능 바이트(byte)- 1바이트 = 8비트- 1KB = 1000바이트 (1KiB = 1024바이트)- 1MB = 1000KB (1MiB = 1024KB) 워드(word)- CPU가 한 번에 처리할 수 있는 데이터 크기- 예) 인텔 x86 CPU: 32비트 워드- 예) x64 CPU: 64비트 워드 📍이진법이진수 표기- 10이 이진수인지 십진수인지 아무 표기가 없으면 혼동을 줄 수 있다- 수학적으로 표현: 10(2)- 코드 상에서 표현: 0b10 => binary를 의미 이진수의 음수 표현- 컴퓨터는 0과 1만 이해하기 때문에 음..
ch1. 컴퓨터 구조 시작하기
·
🖥️ 컴퓨터 일반/💾 컴퓨터 구조
1. 컴퓨터 구조를 알아야 하는 이유📍1) 문제 해결 향상내가 짠 코드의 문제가 아니라 컴퓨터의 문제라면? 📍2) 성능, 용량, 비용 최적화개발한 프로그램을 위한 최적의 컴퓨터 환경은? 2. 컴퓨터 구조의 큰 그림📍컴퓨터 구조의 2가지 핵심 개념1) 컴퓨터가 이해하는 정보- 데이터- 명령어2) 컴퓨터의 4가지 핵심 부품- 중앙처리장치(CPU)- 주기억장치(메모리)- 보조기억장치- 입출력장치 📍1) 컴퓨터가 이해하는 정보컴퓨터는 명령을 처리하는 기계- 컴퓨터는 데이터로 이루어진 명령어를 처리- 컴퓨터는 0, 1로 표현된 정보만 이해 📍2) 컴퓨터의 4가지 핵심 부품메모리- 현재 실행되는 프로그램의 명령어와 데이터를 저장- 메모리 주소: 저장된 명령어와 데이터의 위치를 식별하고, 쉽게 접근하기 위해..