전체 글

현서의 개발 일지📚

    React - API의 활용을 위한 prototype

    React - API의 활용을 위한 prototype

    JavaScript는 클래스라는 개념이 없습니다. 그래서 기존의 객체를 복사하여(cloning) 새로운 객체를 생성하는 프로토타입 기반의 언어입니다. 프로토타입 기반 언어는 객체 원형인 프로토타입을 이요하여 새로운 객체를 만들어냅니다. 이렇게 생성된 객체 역시 또 다른 객체의 원형이 될 수 있습니다. 프로토타입은 객체를 확장하고 객체 지향적인 프로그래밍을 할 수 있게 해줍니다. 프로토타입은 크게 두 가지로 해석됩니다. 프로토타입 객체를 참조하는 prototype함수와 객체 멤버인 proto속성이 참조하는 숨은 링크가 있습니다. 이 둘의 차이점을 이해하기 위해서는 JavaScript 함수와 객체의 내부적인 구조를 이해 해야합니다. 이번 글에서는 JavaScrip의 함수와 객체 내부 구조부터 시작하여 프로토..

    React - mongoDB ( mongoose )

    React - mongoDB ( mongoose )

    서버를 개발할 때 데이터베이스를 사용하면 웹 서비에서 사용되는 데이터를 저장하고, 효율적으로 조회하거나 수정할 수 있습니다. 기존에는 MySQL, OracleDB, PostgreSQL같은 RDBMS(관계형 데이터베이스)를 자주 사용했습니다. 그런데 관계형 데이터베이스에는 몇가지 한계가 있습니다. RDBMS의 한계점 첫 번째는 데이터 스키마가 고정적이라는 점입니다. 여기서 스키마란 데이터베이스에 어떤 형식의 데이터를 넣을지에 대한 정보를 가리킵니다. 예를 들어 회원 정보 스키마라면 계정명, 이메일, 이름 등이 되겠습니다. 새로 등록하는 데이터 형식이 기존에 있던 데이터와 다르다면 기존 데이터를 모두 수정해야 새 데이터를 등록할 수 있습니다. 그래서 데이터양이 많을 때는 데이터베이스의 스키마를 변경하는 작업..

    Java Programming - Interface

    자바에서 인터페이스는 객체의 사용 방법을 정의한 타입입니다. 인터페이스는 객체의 교환성을 높여주기 때문에 다형성을 구현하는 매우 중요한 역할을 합니다. 인터페이스 인터페이스는 객체 사용 설명서이므로 런타임 시 데이터를 저장할 수 있는 필드를 선언할 수 없습니다. 그러나 상수 필드는 선언이 가능합니다. 상수는 인터페이스에 고정된 값으로 런타임 시에 데이터를 바꿀 수 없습니다. 상수를 선언할 때에는 반드시 초기값을 대입해야 합니다. 추상 메소드는 객체가 가지고 있는 메소드를 설명한 것으로 호출할 떄 어떤 매개값이 필요하고, 리턴 타입이 무엇인지만 알려준다. 디폴트 메소드는 인터페이스에 선언되지만 사실은 객체(구현 객체)가 가지고 있는 인스턴스 메소드..

    Java Programming - Inheritance

    상속은 이미 개발된 클래스를 재사용해서 새로운 클래스를 만들기 때문에 코드의 중복을 줄인다. 상속을 해도 부모 클래스의 모든 필드와 메소드를 물려받는 것은 아니다. 부모 클래스에서 private접근 제한을 갖는 필드와 메소드는 상속 대상에서 제외된다. 그리고 부모 클래스와 자식 클래스가 다른 패키지에 존재한다면 default 접근 제한을 갖는 필드와 메소드도 상속 대상에서 제외된다. 그 이외의 경우는 모두 상속의 대상이 된다. 부모 생성자 호출 부모 객체가 먼저 생성되고 자식 객체가 그 다음에 생성된다. 아래 코드는 DmbCellPhone 객체만 생성하는 것처럼 보이지만. 사실은 내부적으로 부모인 CellPhone 객체가 먼저 생성되고. DmbCellPhone객체가 생성된다.] DmbCellPhone d..

    Java Programming - Class

    정적 멤버와 static 정적은 '고정된'이란 의미를 가지고 있다. 정적 멤버는 클래스에 고정된 멤버로서 객체를 생성하지 않고 사용할 수 있는 필드와 메소드를 말한다. 정적 멤버는 객체에 소속된 멤버가 아니라 클래스에 소속된 멤버이기 때문에 클래스 멤버라고도 한다. 정적 필드와 정적 메소드는 클래스에 고정된 멤버이므로 클래스 로더가 클래스 ( 바이트 코드 )를 로딩해서 메소드 메모리 영역에 적재할 떄 클래스별로 관리한다. 따라서 클래스의 로딩이 끝나면 바로 사용할 수 있다. 이를 사용해야 하는 경우는 원의 넓이나 둘레를 구할 떄 파이는 Calculator 객체마다 가지고 있을 필요가 없즌 변하지 않는 공용적인 데이터이므로 정적 필드로 선언하는 것이 좋다. 그러나 객체별로 색깔이 다르다면 색깔은 인스턴스 ..