분류 전체보기 1097

3. git hosting 선택

구글에 git hosting 이라고 검색을 해보면 GIT 공식 홈페이지에서 제공하는 자료가 있습니다. 다양한 서비스들이 있는데, 여기에서 가장 중요한 것은 GITHUB 입니다. GITHub 는 전 세계 오픈소스들이 모이는 엄청난 곳이고 마이크로소프트에 8조에 인수되는 엄청난 일이 과거에 있었습니다. 이 Git hub 라는 사이트를 활용해서 우리는 버전관리를 할 것입니다. 우리는 GitHub 와 같이 GitLab 이라는 사이트를 이용할 것인데, 가격적인 측면에서 유리한 면이 있기 때문입니다. GITHUB 와 GITLAB 은 서로 비슷한 점이 많습니다만 가장 큰 차이는 Free private repositories 입니다. GITLab 에서는 무료로 private 한 비공개 저장소를 무료로 사용할 수 있습니..

2. 수업의 목표와 용어정리

이번 시간에는 관련 용어와 친숙해지는 시간을 가져봅시다. 버전관리와 백업을 위해서는 컴퓨터가 2대가 필요합니다. 우리가 작업하는 컴퓨터를 영어로 Local Repository 라고 합니다. 그리고 작업한 내용을 저장하는 컴퓨터를 Remote Repository 라고 합니다. Local Repository 에서 작업한 내용들을 PUSH 하게 되면 Remote Repository 에 저장됩니다. 바로 이것을 통해서 백업을 달성할 수 있습니다. 백업이라고 하는 것은 복원도 할 수 있어야 합니다. 복원이 가능해지면 아주 편리한 기능이 생깁니다. 바로 여러 장소에서 복원을 통해서 편리하게 작업을 이어서 할 수 있게 됩니다. 자 이렇게 내가 회사에서 작업하던 내용을 Remote Repository 에 저장을 해두었..

1. GIT3 Backup 수업소개

우리가 저장을 하는 지역 저장소는 언젠가 데이터가 사라질 예정인 저장소입니다. 우리의 저장소가 어느날 동작하지 않는다면 어떤 일이 일어날까요? 끔찍한 일이 발생할 겁니다. 이런 위험으로부터 우리를 보호하기 위해서는 정보를 다른 컴퓨터에 저장해서 한 컴퓨터가 저장되어도 다른 컴퓨터에 있는 정보를 활용해서 데이터를 복구시킬 수 있어야 합니다. 이런 일을 할 때 컴퓨터는 멀리 있는 것이 좋습니다. 만약 여러분의 여분 컴퓨터를 지구 반대편에 둘 수 있다면 그렇게 하는 것이 좋은 방법이라는 겁니다. 우리 수업은 GIT 의 기능을 이용해서 백업기능을 활성화 할 것입니다. GIT 은 .git 이라는 폴더에 버전 정보들을 저장합니다. 따라서 .git 디렉터리를 포함한 여러분의 전체 프로젝트 파일을 파일 저장 서비스를 ..

현행 시스템 분석

현행 시스템 분석의 개념 현행 시스템 분석이라는 것은 프로그램을 개발하려고 한다면 회사가 어떻게 굴러가는지 알아야 한다. 이것이 바로 현행 시스템 분석이다. 회사가 무슨 운영체제, 통신방법 등을 알아내는 것이다. 현행 시스템 분석의 정의와 목적 현행 시스템이 어떤 하위 시스템으로 구성되어 있는지 파악하는 절차를 의미한다. 목적 : 개발 시스템의 개발 범위를 확인하고 이행 방향성을 설정한다. 현행 시스템 파악 절차 (시험) 1단계 시스템 구성 파악 : 시스템은 컴퓨터가 아니라 조직을 의미한다. 회사가 어떻게 구성되어서 어떤 일을 하는지 분석하는 것을 의미한다. 예를 들어 어떤 부서가 어떤 일을하고 어떤 연관관계를 가지고 있는지 보는 것이다. 2단계 아키텍처 파악 : 회사의 조직이 어떻게 되어 있는지 파악하..

인터페이스란 { 구현 코드가 없는 인터페이스, 클래스에서 인터페이스 구현하기, 인터페이스 구현과 형 변환 }

인터페이스? 앞선 장에서는 구현하지 않은 메서드를 포함한 추상 클래스에 대해 배웠습니다. 이제 모든 메서드가 추상 메서드로만 이루어진 인터페이스에 대해 알아보겠습니다. 구현 코드가 없는 인터페이스가 어떤 쓰임이 있는지, 클래스가 인터페이스를 구현하는 것은 어떤 의미인지 살펴봅시다. 인터페이스와 다형성의 관계를 이해함으로써 자바 프로그램을 만들 때 인터페이스 설계가 왜 중요한지도 알 수 있습니다. 구현 코드가 없는 인터페이스 인터페이스(Interface)는 클래스 혹은 프로그램이 제공하는 기능을 명시적으로 선언하는 역할을 합니다. 인터페이스는 추상 메서드와 상수로만 이루어져 있습니다. 구현된 코드가 없기 때문에 당연히 인터페이스로 인스턴스를 생성할 수도 없습니다. 그렇다면 구현 코드도 없는 인터페이스는 어..

final 예약어 { 상수를 의미하는 final 변수, 상속할 수 없는 final 클래스, TDD }

final 예약어? 템플릿 메서드를 만들면서 final 예약어에 대해 처음 배워보았습니다. final 은 '마지막' 이란 의미입니다. 즉 마지막으로 정한 것이니 더 이상 수정할 수 없다는 의미를 가지고 있습니다. 자바 프로그램에서 final 예약어는 변수, 메서드, 클래스에서 사용할 수 있습니다. final 메서드는 재정의 할 수 없는 메서드를 의미하며, 다른 말로하면 상속받아 사용할 수 없는 메서드입니다. final 메서드에 대해서는 이미 배웠으므로 여기에서는 final 변수와 final 클래스에 대해 알아보겠습니다. 상수를 의미하는 final 변수 상수는 무엇을 의미하는 것일까요? 상수는 변하지 않는 수를 의미합니다. 간단한 예제를 통해 확인해보겠습니다. public class Constant { i..

템플릿 메서드 응용하기 { 예제 이해하기, 클래스 기능과 관계, 클래스 설계하기, 추상 클래스와 다형성 }

예제 이해하기 (템플릿 메서드를 활용한 게임 캐릭터) 템플릿 메서드까지 배웠으니, 재미있는 예제를 하나 만들어봅시다. 예제 시나리오 : player 가 있고, 이 Player 가 게임을 합니다. 게임에서 Player 가 가지는 레벨에 따라 할 수 있는 세 가지 기능이 있습니다. 바로 run(), jump(), turn() 입니다. 초보자 레벨 : 천천히 달릴 수 있습니다. 중급자 레벨 : 빠르게 달리고 점프할 수 있습니다. 고급자 레벨 : 엄청 빠르게 달리고 점프하고 턴할 수 있습니다. 모든 레벨에서 Player 가 사용할 수 있는 필살기인 go(int count) 메서드를 제공합니다. go( ) 메서드는 한 번 run하고, 매개변수로 전달된 count 만큼 jump 하고, 한 번 turn 합니다. 그 ..

템플릿 메서드 { 추상 클래스와 템플릿 메서드, 템플릿 메서드의 역할, final }

추상 클래스와 템플릿 메서드 (무슨 관계일까?) 추상 클래스를 활용한 예가 바로 템플릿 메서드입니다. '템플릿 template' 이란 용어는 무엇을 뜻할까요? 사전에서 보면 틀이나 견본을 뜻합니다. 틀이 있는 메서드라는 의미지요. 템플릿 메서드는 05장에서 소개한 싱글톤 패턴과 같은 디자인 패턴입니다. (이전 포스팅 참조) 즉 템플릿 메서드는 디자인 패턴의 한 방법으로 모든 객체 지향 프로그램에서 사용하는 구현 방법입니다. 따라서 이 구현 방법은 자바뿐 아니라 C++, C# 에서도 동일하게 적용됩니다. 예시를 통해서 알아보겠습니다. public abstract class Car { public abstract void drive(); public abstract void stop(); public voi..

추상 클래스 { 추상 클래스란, 추상 클래스 구현하기, 추상 클래스를 만드는 이유 }

추상 클래스란? 08장에서 배운 상속을 기반으로 이 장에서는 추상 클래스에 대해 알아보겠습니다. 추상 클래스는 완전하지 않은 클래스입니다. 완전하지 않다는 것이 부족하다는 뜻일 수도 있지만, 다른 한편으로는 완성되지 않았기 때문에 가능성이 남아 있다는 의미입니다. 이 가능성을 활용해 좀 더 확장 가능하고 다양한 프로그램을 개발할 수 있습니다. 추상 클래스에 대해서 배우기 전에, '추상적이다' 라는 말에 대해서 먼저 생각해볼까요? 추상적이라는 것은 구체적이지 않고 막연한 것을 뜻합니다. '구체적이지 않고 막연한 클래스' 라는 것은 무엇을 의미하는 것일까요? 추상 클래스를 영어로 표현하면 abstract class 이고, 추상 클래스가 아닌 클래스는 concrete class 라고 합니다. 우리가 지금까지 ..

다운 캐스팅과 instanceof { 다운 캐스팅이란, instanceof란 }

하위 클래스로 형 변환, 다운 캐스팅이란? 앞에서 상위 클래스로 형 변환이 묵시적으로 이루어지는 과정을 알아보았습니다. 여기에서는 다시 하위 클래스로 형 변환이 진행되는 과정을 살펴보겠습니다. 위 그림과 같은 계층 구조에서 다음과 같이 자료형을 선언했다고 생각해 보겠습니다. Animal ani = new Human( ); 이때 생성된 인스턴스 Human 은 Animal 형입니다. 자연스럽게 Human 은 Animal 클래스에서 선언한 메서드와 멤버 변수만 사용할 수 있습니다. 다른 말로 하자면, Human 클래스에 더 많은 메서드가 구현되어 있고 다양한 멤버 변수가 있다고 하더라도 자료형이 Animal 형인 Human 은 사용할 수 없다는 것을 의미합니다. 필요에 따라 다시 원래 인스턴스의 자료형으로 되..