본문 바로가기

반응형

프로그래밍언어

(102)
[JAVA] 다형성 (Polymorphism) 1. 다형성 (polymorphism) 다형성이랑 '여러가지 형태를 가질 수 있는 능력'을 의미한다. 자바에서는 한 타입의 참조변수로 여러 타입의 객체를 참조할 수 있도록 함으로써 다형성을 프로그램적으로 구현하였다. 이 말은 조상 클래스 타입의 참조변수로 자손 클래스의 인스턴스를 참조할 수 있도록 하였다는 의미이다. class Parent { ... } class Child extends Parent { ... } ... // 각각의 참조 변수의 선언 타입과 일치하는 인스턴스를 참조한다. Parent p = new Parent(); Child c = new Child(); // 각각의 타입과 일치하는 자손 인스턴스를 참조한 위의 예시와 달리 // 조상 타입의 참조 변수로 자손 인스턴스를 참조한다. Par..
[JAVA] 제어자 (Modifier) 1. 제어자 (modifier) 제어자란 클래스, 변수 또는 메서드의 선언부에 함께 사용되어 부가적인 의미를 부여한다. 제어자는 접근 제어자와 그 외의 제어자로 구분할 수 있다. - 접근 제어자: public, protected, default, private - 그 외의 제어자: static, final, abstract, native, transient, synchronized, volatile, strictfp 제어자는 여러 제어자를 조합하여 사용하는 것이 가능한데, 접근 제어자는 4가지 중 하나만 선택해서 사용할 수 있다. 2. static static은 '클래스의' 또는 '공통적인'의 의미를 가지고 있다. 인스턴스 변수는 하나의 클래스로부터 생성되었더라도 각기 다른 값을 유지하지만 클래스 변수는..
[JAVA] 자바 패키지 1. 패키지 (package) 패키지란 클래스의 묶음이다. 패키지에는 클래스와 인터페이스를 포함시킬 수 있으며 관련된 클래스들끼리 그룹 단위로 묶어 놓음으로써 클래스를 효율적으로 관리할 수 있다. 같은 이름의 클래스이더라도 서로 다른 패키지에 위치시키는 것이 가능하기 때문에 같은 이름의 클래스끼리 충돌하는 것을 방지할 수 있다. 클래스가 컴파일되면 하나의 클래스 파일 (.class)가 되는 것처럼 패키지 또한 물리적인 구조를 가지는데, 디렉토리를 통해 계층이 이루어진다. 예를들어 java.lang.String 클래스는 java 디렉토리 안의 lang 디렉토리에 해당 클래스 파일이 위치하고 있다. 하나의 소스파일은 첫번쨰 문장에 package 키워드로 패키지를 선언할 수 있으며, 단 한번의 선언만 허용한다..
[JAVA] 오버라이딩 (Overriding) 1. 오버라이딩 오버라이딩이란 조상 클래스로부터 상속받은 메서드의 내용을 변경하여 사용하는 것이다. 상속받은 메서드의 이름은 유지하면서 메서드의 내용을 변경하여 덮어씌우는 것으로 이해하면 된다. 메서드의 이름은 동일하지만 실행되는 것은 다른 메서드인 것이다. class Parent { public void cal(int a, int b) { return a + b; } } class Child extends Parent { public void cal(int a, int b) { return a * b; } } 자식 클래스인 Child는 Parent를 상속받았기 때문에 Parent의 cal 메서드를 사용할 수 있다. 하지만 이 경우에는 자식 클래스인 Child에 메서드 cal이 새로 구현이 되어있다. 그..
[JAVA] 상속 (Inheritance) 1. 상속 상속은 기존 클래스를 재사용하여 새로운 클래스를 작성하는 것이다. 상속을 이용하면 기존에 작성한 클래스를 사용할 수 있기 때문에 코드의 재사용성을 높이고 코드의 중복을 제거하여 프로그램의 생산성과 유지보수에 유리하다. 자바에서 상속을 구현하기 위해서는 'extends' 키워드를 사용하면 된다. 클래스 선언 시에 클래스 이름 뒤에 extends 와 상속하려는 클래스의 이름을 적어주면 된다. // Child 클래스가 Parent 클래스를 상속 class Child extends Parent { ... } 상속 관계에 있는 두 클래스는 다음과 같은 용어로 표현한다. - 조상 클래스 - 부모 클래스 (parent), 상위 클래스 (super), 기반 클래스 (base) - 자손 클래스 - 자식 클래스..
[JAVA] HashMap vs HashTable HashMap 과 HashTable 은 모드 key 와 value 를 1대1 형태로 데이터를 저장하는 자료구조이다. 데이터를 저장할 때 key 값과 이와 mapping 되는 value 를 저장하는데, 이름에서 알 수 있듯이 hashing 을 사용하여 데이터를 저장한다. 데이터를 저장할 때 key 값은 hash function 을 통해 hash code 으로 변환되는데, 이 값을 index 로 하여 테이블의 해당 index 에 value 를 저장하는 방식으로 데이터를 저장한다. 둘다 key 에 대한 중복이 없고 순서를 보장하지 않는다. 대신 key 를 알고 있는 경우에 검색 속도는 O(1) 의 시간복잡도를 가지기 때문에 빠른 검색을 보장한다. 차이점 HashMap 은 비동기로 동작한다. thread-saf..
[Python] urlparse 1. urllib.parse urllib.parse는 URL을 구성요소로 파싱하는 모듈이다. urllib.parse 모듈은 URL (uniform resource locator) 문자열을 addressing scheme, network location, path 등의 구성 요소로 구분하고, 이를 다시 URL 문자열로 결합하며, 상대 URL을 주어진 base URL을 기준으로 절대 경로로 변환하는 등의 기능을 수행한다. 이 모듈은 Relative Uniform Resource Locatorsd에 대한 인터넷 RFC에 맞춰 설계되었다. 지원하는 URL scheme들은 다음과 같다. - schemes: file, ftp, gopher, hdl, http, https, imap, mailto, mms, news..
[Python] argparser CLI에서 프로그램을 실행시킬 때 argument로 '-c', '--help' 등과 같은 옵션들을 줄 수 있다. 파이썬에서는 이러한 argument를 파싱하는 모듈로 argparse를 제공한다. argparse 모듈을 사용하여 사용자 친화적인 cli interface를 쉽게 작성할 수 있다. 이 모듈은 옵션으로 가능한 arguments를 정의하고, sys.argv를 어떻게 파싱할 것인가를 설정한다. 그리고 자동으로 help와 usage, issue error 등의 옵션을 생성해준다. 1. ArgumentParser class argparse.ArgumentParser(prog=None, usage=None, description=None, epilog=None, parents=[], formatter_c..

반응형