«class-design» 태그된 질문

업계에서 가장 잘 알려진 클래스를 디자인하는 방법에 대한 일반 지침.

4
객체 지향 프로그래밍 : getter / setter 또는 논리적 이름
나는 현재 내가 쓰고있는 수업에 대한 인터페이스에 대해 생각하고 있습니다. 이 클래스에는 캐릭터의 스타일, 예를 들어 캐릭터가 굵은 체, 이탤릭체, 밑줄 등이 있습니다. 값을 변경하는 메소드에 getter / setter 또는 논리적 이름을 사용해야하는지 이틀 동안 나 자신과 토론했습니다. 이 스타일. 논리적 이름을 선호하는 경향이 있지만, 효율적이지 않고 논리적이지 않은 코드를 …

3
'직원'수업은 어떻게 디자인해야합니까?
직원 관리를위한 프로그램을 만들려고합니다. 그러나 Employee수업 을 디자인하는 방법을 알 수는 없습니다 . 저의 목표는 Employee객체를 사용하여 데이터베이스에서 직원 데이터를 생성하고 조작 할 수 있도록하는 것입니다. 내가 생각한 기본 구현은 다음과 같습니다. class Employee { // Employee data (let's say, dozens of properties). Employee() {} Create() {} Update() {} Delete() …

2
인스턴스가 하나만있는 Python 클래스 : (단일) 클래스 인스턴스를 언제 작성해야합니까?
한 번만 인스턴스화되는 파이썬 클래스가 주어지면 클래스의 객체가 하나뿐입니다. 어떤 경우에 클래스와 직접 작업하는 대신 단일 클래스 인스턴스를 만드는 것이 타당한 지 궁금합니다. 비슷한 질문 이 있지만 다른 초점을 가지고 있습니다. 전역 변수와 함수를 클래스로 그룹화하고 파이썬 전용이 아닙니다. 후자는 (파이썬에서) 클래스도 객체라는 사실을 고려하지 않습니다. 최신 정보: 파이썬에서는 클래스와 …

2
정적 클래스 및 멤버에 대한 생각과 모범 사례 [닫기]
폐쇄되었습니다 . 이 질문은 더 집중되어야 합니다. 현재 답변을받지 않습니다. 이 질문을 개선하고 싶습니까? 이 게시물 을 편집 하여 한 가지 문제에만 집중할 수 있도록 질문을 업데이트하십시오 . 휴일 육년 전 . 정적 멤버 또는 전체 정적 클래스에 대한 생각과 업계 모범 사례에 대해 매우 궁금합니다. 이것에 대한 단점이 있습니까? …
11 c#  class-design 

4
데이터 객체에 의존성 주입을 사용합니까?
나는 의존성 주입에 대해 배우고 있으며 무언가에 붙어 있습니다. Dependency Injection은 생성자를 통해 종속 클래스를 보내는 것이 좋지만 데이터 객체에 필요한지 궁금합니다. 단위 테스트 가능성은 DI의 주요 이점 중 하나이므로 데이터 만 저장하고 데이터를 저장하는 절차는 수행하지 않는 데이터 객체가 될 수 있습니다. 데이터 객체? Class DO{ DO(){ DataObject2List = …

2
클래스에 공통 데이터베이스 연결을 배치 할 위치
데이터베이스에 / 데이터베이스에서 일부 객체를 저장 / 검색하는 작업을 수행하는 여러 클래스 (리포지토리)가 있습니다. 모두 하나의 데이터베이스에 연결해야합니다. 나는 다시 정의하는 것을 방지하기 위해 생각 ConnectionString과를 SqlConnection그들에게 열려있는 연결을 전달, 각 클래스에서. 그렇다면 언제 어디서 언제 해당 연결을 정의 / 열고 클래스에 전달할 수 있습니까? 이 공통 자원에 액세스 할 …
11 c#  sql  class-design 

5
내 C ++ 코드에서 클래스 상호 의존성을 해결하는 방법은 무엇입니까?
내 C ++ 프로젝트에서 나는 두 개의 클래스를 가지고 Particle와 Contact. 에서 Particle클래스 I는 멤버 변수가 std::vector<Contact> contacts(A)의 모든 접점 포함 Particle개체를 대응하는 멤버 함수 getContacts()와 addContact(Contact cont). 따라서 "Particle.h"에는 "Contact.h"가 포함됩니다. 에서 Contact클래스, 나는 생성자에 코드를 추가 할 Contact그 호출 Particle::addContact(Contact cont)이이 때문에, contacts모두 업데이트됩니다 Particle하는 사이에 개체 Contact개체가 …

5
인터페이스와 상속 : 두 세계의 최고?
나는 인터페이스를 '발견'했고 그것들을 사랑하기 시작했다. 인터페이스의 장점은 계약이라는 것입니다. 계약을 이행하는 모든 개체는 해당 인터페이스가 필요한 모든 곳에서 사용할 수 있습니다. 인터페이스의 문제점은 기본 구현을 할 수 없다는 것입니다. 이는 평범한 속성에 대한 고통이며 DRY를 물리칩니다. 이것은 구현과 시스템이 분리 된 상태를 유지하기 때문에 좋습니다. 한편 상속은 더 긴밀한 …

2
단일 함수를 재사용하기 위해 클래스를 확장하는 것이 합리적인 관행입니까?
워드 프레스 사이트를 위해 다양한 포스트 필터를 개발 중이며 단일 클래스로 처음 4 개를 구축했습니다. 마지막 두 가지는 클래스에서 단일 함수 (최종 링크를 생성하는 함수) 만 공유 할 수있을 정도로 범위가 다릅니다. 이 경우 또는 유사한 가상의 여러 인스턴스에서 해당 기능을 갖기 위해 원래 클래스를 확장하는 것이 합리적입니까, 아니면 더 …

5
“빈”초록 / 수업을 가질 수 있습니까?
물론, 그런 식으로 디자인하는 것이 합리적인지 궁금합니다. 브레이크 아웃 클론을 만들고 클래스 디자인을하고있었습니다. 필자는 아니지만 C ++에서 배운 내용을 적용하기 위해 상속을 사용하고 싶었습니다. 나는 클래스 디자인에 대해 생각하고 다음과 같은 것을 생각해 냈습니다. GameObject-> 기본 클래스 (x 및 y 오프셋과 같은 데이터 멤버와 SDL_Surface * MovableObject 의 벡터로 구성됨 …

4
메서드 이름을 바꾸면 캡슐화를 유지할 수 있습니까?
getter / setter가 정당화되는 시점에 대해이 페이지를 읽고 OP는 다음 코드 샘플을 제공했습니다. class Fridge { int cheese; void set_cheese(int _cheese) { cheese = _cheese; } int get_cheese() { return cheese; } } void go_shopping(Fridge fridge) { fridge.set_cheese(fridge.get_cheese() + 5); } 허용 응답 상태 : 그런데, 귀하의 예제에서, 나는 클래스 …

5
코드를 확장하기 어려운 추상화가 너무 많음
코드베이스에서 추상화가 너무 많거나 적어도 처리하는 데 문제가 있습니다. 코드베이스의 대부분의 메소드는 코드베이스의 최상위 A를 취하도록 추상화되었지만이 상위의 하위 B에는 이러한 메소드 중 일부의 논리에 영향을주는 새로운 속성이 있습니다. 문제는 입력이 A로 추상화되고 A 에이 속성이 없기 때문에 해당 속성에서 해당 속성을 확인할 수 없다는 것입니다. B를 다르게 처리하는 새로운 …

4
비즈니스 객체 클래스 디자인의“완전한 공개”사고 방식에 반박하는 방법
우리는 비즈니스 객체에 대해 많은 단위 테스트 및 리팩토링을 수행하고 있으며 다른 동료와 클래스 디자인에 대한 의견 이 매우 다른 것 같습니다 . 내가 팬이 아닌 예제 클래스 : public class Foo { private string field1; private string field2; private string field3; private string field4; private string field5; public Foo() …

6
필드 대 메서드 인수 [닫기]
휴무 . 이 질문은 의견 기반 입니다. 현재 답변을받지 않습니다. 이 질문을 개선하고 싶습니까? 이 게시물 을 편집 하여 사실과 인용으로 답변 할 수 있도록 질문을 업데이트하십시오 . 휴일 육년 전 . 방금 새 클래스를 작성하기 시작했으며 엄격하게 필요하지 않은 많은 메소드 인수를 추가하고있었습니다. 이것은 일반적인 구성이나 클래스의 종속성이 아닌 …

5
일반화보다 구성을 선호하는 것이 항상 올바른 선택인지 어떻게 알 수 있습니까?
물체의 물리적 존재 여부에 관계없이 다양한 방법으로 모델링 할 수 있습니다. 많은 경우에 일반화 나 구성을 임의로 사용할 수 있습니다. 그러나 "일반화보다 선호하는 구성 [sic]"의 GoF 원칙은 구성을 사용하도록 안내합니다. 예를 들어, 선을 모델링 할 때 Point (일반화)를 확장하는 대신 Point (구성) 유형의 PointA와 PointB 두 멤버를 포함하는 클래스를 만듭니다. …
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.