Programming Language 47

[whiteship_java_study]8주차. 인터페이스

목표 자바의 인터페이스에 대해 학습하세요. 학습내용 인터페이스 정의하는 방법 인터페이스 구현하는 방법 인터페이스 레퍼런스를 통해 구현체를 사용하는 방법 인터페이스 상속 인터페이스의 기본 메소드 (Default Method), 자바 8 인터페이스의 static 메소드, 자바 8 인터페이스의 private 메소드, 자바 9 인터페이스(Interface) 영어의 뜻을 해석하면 대면부, 결합부이다. 두개 이상의 시스템, 장치 사이에서 정보나 신호를 주고받는 경우의 접점이나 경계면이다. 자바에서 인터페이스란 다른 클래스를 작성할때 기본이 되는 틀을 제고하면서, 다른 클래스 사이의 중간 매개 역할까지 담당하는 일종의 추상 클래스를 의미한다. 또한, 인터페이스는 일반적인 추상클래스와 다르게 다중 상속을 지원한다. 단..

Go 언어 프로그래밍 - Go 루틴

『Tucker의 Go 언어 프로그래밍』 스터디 요약 노트입니다. 쓰레드(Thread) 쓰레드는 실행 흐름을 말한다. 명령어가 로드되면 메모리로 올라간다. 메모리로 올라간 명령어가 CPU를 이용하여 명령어를 실행한다. 명령어 다발의 실행 흐름을 쓰레드라고 한다. 멀티 쓰레드(Multi Thread) 현재는 멀티코어(2개 이상의 CPU)가 흔해졌지만, 과거에는 싱글코어가 대부분이었다. 하나의 코어로 다건의 명령어를 실행 하기 위해 쓰레드를 여러개 사용하하며 코어가 빠르게 쓰레드를 교체시키면서 사용하게 되었다. 컴퓨터에서는 하나의 코어가 쓰레드를 나누어 하나씩 진행하고 있지만 동시에 처리되는 것 처럼 보인다. 이를 멀티 쓰레드라고한다. 이렇게 멀티쓰레드에서 명령어의 교체를 관리하는 것이 OS이다. 이것을 스케..

Go 언어 프로그래밍 - 에러처리

『Tucker의 Go 언어 프로그래밍』 스터디 요약 노트입니다. 에러는 언제 어디서나 발생한다. 오류(Error) 응용 프로그램의 사용자에 의해 발생 프로그래머가 적절한 예외처리를 하지 않은 경우 에러가 발생 버그(Bud) 프로그래머의 실수 디자인/ 기획단의 실수 실수로 인한 오동작 에러 핸들링(Error Handling) 에러는 언제 어디서나 발생한다. 에러는 어디서든 발생할 수 있다. 그러므로 어떻게 에러에 대처하고 관리하는 것이 중요하다. 에러 핸들링은 크게 두가지이다. (사느냐 죽느냐) 빠르게 프로그래밍을 죽이는 방법 빠르게 에러를 처리하여 프로그램을 지속시키는 방법(에러 반환) 에러마다 개발 단계마다 프로그램 성격마다 처리 방법이 다르다. 에러 반환 호출자에게 에러를 반환하여 처리를 위임한다. ..

[whiteship_java_study]7주차. 패키지

목표 자바의 패키지에 대해 학습하세요. 학습 내용 package 키워드 import 키워드 클래스패스 CLASSPATH 환경변수 -classpath 옵션 접근지시자 package 키워드 패키지(Package) 비슷한 성격의 자바 클래스들을 모아 넣는 자바의 디렉토리이다. 우리가 사용하는 디렉토리의 구조, 트리구조이다. 서브패키지(Subpackage) 패키지의 하위 패키지이다. 여러갈래의 서브패키지가 생길 수 있다. 패키지의 특징 클래스의 분류가 용이하다. 패키지가 다르면 동일한 클래스명을 사용할 수 있다. 접근지시자에 따라 클래스간 이동을 제한할 수 있다. //week.seven package //seven은 week 의 subpackage package week.seven; public class Pa..

Go 언어 프로그래밍 - 자료구조 - 2

『Tucker의 Go 언어 프로그래밍』 스터디 요약 노트입니다. 맵(map) 키와 값 현태로 데이터를 저장하는 자료구조이다. 프로그래밍 언어에 따라서 딕셔너리(dictionary), 해쉬 테이블(hash table), 해쉬맵(hash map) 등으로 부른다. 같은 키를 여러번 작성하면 해당 키에 매핑되는 값이 업데이트된다. map[key]value map[키 타입]값 타입 맵은 생성 시, make를 이용하여 초기화가 필요하다. package main import ( "fmt" ) func main() { //맵을 생성하기 위한 초기화 m := make(map[string]string) m["이화랑"] = "서울시 광진구" m["송하나"] = "서울시 강남구" m["백두산"] = "부산시 사하구" m["최..

Go 언어 프로그래밍 - 자료구조 - 1

『Tucker의 Go 언어 프로그래밍』 스터디 요약 노트입니다. 자료구조(Data Structure) 자료들을 어떤 형태로 저장할 것인가를 나타낸다. 크게 배열, 리스트, 트리, 맵 등이 있다. Big-O표기법 알고리즘의 효율성을 나타내는 표기법 중 하나로, 가장 많이 쓰인다. 알고리즘의 효율성 = 시간적, 공간적 효율성을 확인하는 것 효율성의 상한성(최악)을 표시하는 것이 Big-O(빅오) 표기법이다. 리스트(List) 배열과 함께 가장 기본적인 선형 자료구조(Linear Data Structure) 중 하나이다. 선형 자료구조 비선형 자료구조 (비선형 자료구조의 대표주자로는 트리(Tree)가 있다.) Go에서는 container 라는 패키지에서 list를 기본 제공한다. //리스트의 형태 type E..

[whiteship_java_study]6주차. 상속

목표 자바의 상속에 대해 학습하세요. 학습내용 자바 상속의 특징 상속(Inheritiance) 상속이란 기존의 클래스게 기능을 추가하거나 재정의하여 새로운 클래스를 정의하는 것을 의미한다. 이러한 상속은 캡슐화, 추상화와 더불어 객체 지향 프로그래밍을 구성하는 중요한 특징 중 하나이다. 상속을 이용하면 기존에 정의되어있는 클래스의 모든 필드와 메소드를 물려받아, 새로운 클래스를 생성할 수 있다. 기존에 정의되어 있던 클래스를 부모/상위/기초 클래스라고 부른다. 상속을 통해 작성되는 클래스는 자식/하위/파생 클래스 라고 한다. 상속의 장점 기존의 클래스 재활용 클래스간 계층적 관계 구성으로 다형성의 문법 기반 생성 상속 방법 자식 클래스에서는 부모 클래스의 필드와 메소드만 상속도디며, 생성자와 초기화 블록..

[whiteship_java_study]5주차. 클래스(Class)

목표 클래스 정의하는 방법 객체 지향 프로그래밍(OOP, Object Oriented Programming)이란 모든 데이터를 객체(Object)로 취급하며 객체 중심으로 프로그래밍을 하는 것을 말한다. 이때, 객체를 만들기 위한 설계도의 개념을 클래스 라고 한다. 클래스는 필드(field), 메소드(method)로 구성된다. 접근제어자 class 클래스명{ 필드 선언( 클래스 내 지역 변수) 메소드 선언 } 자바에서 클래스를 사용하기 위해서는 해당 클래스 타입의 객체(object)를 선언해야한다. 이때, 클래스로부터 객체를 선언하는 과정을 클래스의 인스턴스 화라고 한다. 클래스의 모양대로 객체를 생성하여 메모리에 할당하는 것을 말하고, 이때부터 객체가 메모리에 할당되어있다. 객체 만드는 방법 (new ..

Go 언어 프로그래밍 - 함수 고급편

『Tucker의 Go 언어 프로그래밍』 스터디 요약 노트입니다. 가변 인수 함수 ...키워드 사용 하여 배열인자로 받아 올 수 있다. package main import ( "fmt" ) func sum(nums ...int) int { sum := 0 fmt.Printf("nums type : %T\n", nums) for _, v := range nums { sum += v } return sum } func main() { fmt.Println(sum(1, 2, 3, 4, 5)) fmt.Println(sum(10, 20)) fmt.Println(sum()) } //fmt.Println 함수를 참고해보자(아래) //빈 인터페이스(interface{})를 가변인자로 받는다. //이전 수업시간에 빈인터페..

Go 언어 프로그래밍 - 인터페이스

『Tucker의 Go 언어 프로그래밍』 스터디 요약 노트입니다. 사실 인터페이스는 중간에 빠져서 내용을 다 이해하지 못했습니다. 그래서 다른 블로그/깃허브/검색 등을 참고하였습니다. 인터페이스(Interface) interface : 구조체(struct)가 필드의 집합체라면, interface는 메서드의 집합체이다. interface는 타입이 구현해야 하는 메서드 원형들을 정의한다. package main import ( "fmt" ) //type 정의 type Tire struct { price float64 location int stat bool } //1.인터페이스는 type문을 사용하여 정의한다 type Car interface { setTire() float64 } //2.인터페이스 구현 //..