I like this, the "photoshoot" wraps everything up nicely without any further knowledge of the domain/problem. Alternatively could have had camera.TakePhotosOf(photoshoot.CallNextSubject()) as others have pointed out.
–
Thomas JamesApr 27 '11 at 10:44

There is no preferred solution. It doesn't matter if you have Camera.TakePhoto(subject) or Photoshoot.TakePhoto(subject, camera). Even with a full set of requirements it may not make much difference. Some designs may be better than others, but there is never a single 'best' design.

From the sentence in your question the implication seems to be in this case that a photoshoot contains many photos, each photo has one subject and is taken with a single camera. This is not a general solution, but for your specific question (homework? :-) ) the classes would look something like: